ClassLoader 双亲委派
一个程序有一个默认的appClassLoader。类不是由被调用者也不是被自身加载的,正常情况下是被默认的AppClassLoader加载的。
System.out.println(test3.class.getClassLoader());
System.out.println(test4.class.getClassLoader());
System.out.println(test5.class.getClassLoader()); ClassLoader appClassLoader = ClassLoader.getSystemClassLoader();
System.out.println("the appClassLoader : " + appClassLoader);

appClassLoader是同一个对象。
类总是由appClassLoader的父类的父类加载,如果加载失败由父类加载,如果再失败由它本身加载,也就是双亲加载机制。这是有一定的目的的。
appClassLoader的父类的父类,即BootstrapClassLoader(启动类加载器),只加载某些路径下的类。
appClassLoader的父类,ExtClassLoader (标准扩展类加载器),也只加载某些路径下的类。
appClassLoader,系统类加载器,也只加载某些路径下的类。这个路径就是class path配的地址。这些路径下不能保证类只出现一次,以我测试看,是先找到哪个就加载哪个。
网上的好多文章都缺点什么,让人更晕。classloader,双亲委派知识的关键是一个程序只有一个appClassLoader,类基本上都是由它加载的。
****************************************
tomcat实现了自定义的classloader来实现不同webapp的隔离。
System.out.println(test.class.getClassLoader());
System.out.println(this);
ClassLoader appClassLoader = ClassLoader.getSystemClassLoader();
System.out.println("the appClassLoader : " + appClassLoader);

在不同的webapp里,classloader不一样,servlet对象也不一样。
通过这些知识也得出自己的webapp的类库放在自己webapp的lib库里比较合理,不要放到tomcat的类库中,classpath变量也慎用,classpath的值在catlinet.bat中会被初始化。

ClassLoader 双亲委派的更多相关文章
- java安全沙箱(一)之ClassLoader双亲委派机制
java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...
- ClassLoader&双亲委派&类初始化过程
1.class sycle 类加载的生命周期:加载(Loading)–>验证(Verification)–>准备(Preparation)–>解析(Resolution)–>初 ...
- 【Java_基础】java类加载过程与双亲委派机制
1.类的加载.连接和初始化 当程序使用某个类时,如果该类还未被加载到内存中,则系统会通过加载.连接.初始化三个步骤来对类进行初始化.如果没有意外,jvm将会连续完成这三个步骤,有时也把这三个步骤统称为 ...
- 【java基础】- java双亲委派机制
在了解双亲委派机制之前,你应当知道classloader(如果不了解,可以现在去恶补一下哈) 四种classloader 虚拟机自带 引导类加载器(Bootstrap ClassLoader) 扩展类 ...
- java双亲委派模型
Java类加载器(ClassLoader) 双亲委派模式要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器,请注意双亲委派模式中的父子关系并非通常所说的类继承关系,而是采用组合关系来 ...
- 创建自定义ClassLoader,绕过双亲委派
1.什么是类加载 通过javac将.java文件编译成.class字节码文件后,则需要将.class加载到JVM中运行,哪么是谁将.class加载到JVM的呢?那就是类加载器啦. 2.类加载器类型 B ...
- JVM加载类的过程,双亲委派机制中的方法
JVM加载类的过程: 1)JVM中类的整个生命周期: 加载=>验证=>准备=>解析=>初始化=>使用=>卸载 1.1.加载 类的加载阶段,主要是获取定义此类的二进 ...
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
一.概述 定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型.类加载和连接的过程都是在运行期间完成的. 二. 类的 ...
- 关于Java类加载双亲委派机制的思考(附一道面试题)
预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面 ...
- java双亲委派模型如何递归实现
以下是Classloader的中最重要的方法,也就是所谓的双亲委派模型.这个模型第一次在周志明的书上看到,当时看了只知道是类加载过程是首先是委托给父加载器,否则父不能加载,则自己加载,整个过程实则是一 ...
随机推荐
- Python获取当前在线设备ip和mac地址
获取局域网所在的网段 with os.popen("ipconfig /all") as res: for line in res: line = line.strip() if ...
- Apache 基本配置 代理 重定向 跨域 https ssl证书 在windows下常用命令
官网下载地址 https://httpd.apache.org/ => https://httpd.apache.org/docs/current/platform/windows.html#d ...
- ios自动化测试学习
原文:https://blog.csdn.net/jinjiangongzuoshi/article/details/126552806 内测发布工具 fir.im 为开发者提供测试应用极速发布,应用 ...
- kvm介绍(1)
- IIS10.0 Web平台安装程序无法安装URL重写工具
Windows10系统的IIS10.0需要安装URL rewrite重写模块2.0,提示"很遗憾,无法安装下列产品",解决方法: win键+R键,运行regedit,打开注册表编辑 ...
- win10下载jdk并配置环境变量
win10下载jdk并配置环境变量 1. jdk下载 下载官网:Java SE开发套件15.0.2 2. jdk安装 一直点下一步就可以 3. 环境变量 配置 右键我的电脑--属性--高级系统设置-- ...
- 2.常用Dos命令
#盘符切换 D: C:#查看当前目录下的所有文件 dir#切换目录 cd change directory #切换盘cd /d D:切换到D盘 #cd..返回上一级# 清理屏幕 CL ...
- mysql大小写无法区分问题
1.在创建表时设置编码格式 ALTER TABLE `test`.`t_test` COLLATE=utf8mb4_bin; 只能在建表或者没有数据时设置. 还有其他比如改字段格式,比如将varcha ...
- ucharts的区域图、折线图(有x轴的),修改x轴显示为隔一个显示
1.原本的显示方式: 2.想要的效果: 3.这边我使用的是uchart的组件,在uni_modules > qiun-data-charts > js_sdk > u-charts, ...
- 上分之路 VP Codeforces Round #744 (Div. 3) ABDE
VP情况 4 / 8 AC: A,B,D,E1 60 minutes WA: C 4 127 +00:02 +00:28 -7 +00:58 +00:39 手速还在线 D pair排个 ...