public class ClassLoadTest {
/* 知识储备 */
/*
* 类加载器 类加载器是在类未开始时进行CLASS的加载
* 其中包括BootStrap(核心,由C++编写的2进制编码,是开启类加载器的类)JRE/lib/rt.jar
* ExtClassLoader,AppClassLoader其中Ext为App的父类 Ext主要是加载jre下的jar文件
* 其中App加载Classpath下的类
* Ext加载JRE/LIB/EXT/*.JAR
* BootStrap 加载 JRE/LIB/rt.jar
*/
/*
* 类加载器的原理,还有类加载器的树形结构
*
* 委托加载机制,调用子类时找父加载器app子层要找但是不找而是先找父类加载器, 没有父类,开始找自己有么,没有加载成功将下放在下级
*/
// 模板方法设计模式,总体流程在父类中规定好,在细节上留一个抽象方法
// ClassLoader classLoader = new ClassLoader()
/*
* 一下为类加载器的测试方法 1.测试类加载器名称
*/
public static void main(String[] args) {
// 输出ClassLoadTest类的类加载器名称
// System.out.println(ClassLoadTest.class.getClassLoader().getClass()
// .getName());
//获取系统类的类加载器
// System.out.println(System.class.getClassLoader());
/* 将此类打包成JAR包放入到jre/ext的目录下,此类在运行时就将在EXT目录先进行加载,app加载器将不
* 再加载此类。
* 得到结论(委托机制,统一管理):
* 从最低层发出请求,推到最顶层(开始找,没有找到就向下级找)
* BootStrap --> Ext --> App (父-->子)
* 请求流向(但并没有开始找) App --> Ext --> Boot (开始查找,找到后进行加载没有继续向下) --> Ext -- App
* */
ClassLoader classLoader = ClassLoadTest.class.getClassLoader();
while(classLoader != null){
System.out.println(classLoader.getClass().getName());
classLoader = classLoader.getParent();
}
System.out.println(classLoader);
System.out.println(new ForClassLoad());
}
}
分享到:
相关推荐
在实际开发中,父亲委托机制可以用于实现类隔离,比如不同的模块可以使用不同的类加载器,每个模块有自己的类加载器,这样可以防止不同模块之间的类发生冲突。 总之,Java的类加载器父亲委托机制是一种设计精巧、...
3. 加载器委托加载机制: 类加载器遵循“双亲委派模型”(Delegation Model)。当一个类加载器接收到加载类的请求时,它首先会委托其父类加载器去尝试加载,如果父类加载器无法加载,再由当前加载器尝试。这个过程...
Java中的类加载器遵循一个原则叫做“父母委托模型”,即当一个类加载器收到类加载请求时,首先将加载任务委托给父类加载器,只有当父类加载器无法完成加载时才会尝试自己加载。 这种设计模式的好处在于避免了类的...
类加载器的工作机制遵循“双亲委派模型”:当一个类加载器接收到加载类的请求时,它首先会委托父加载器去尝试加载,只有在父加载器无法加载的情况下,子加载器才会尝试自己去加载。这种设计可以防止类的重复加载,并...
类加载器遵循双亲委派模型,这意味着当一个类加载器尝试加载类时,它首先会将请求委托给其父类加载器,直到到达顶层的Bootstrap ClassLoader,如果父类加载器无法找到该类,子类加载器才会尝试自己加载。 在Tomcat...
### 类加载器的工作机制 类加载器遵循“双亲委托模型”进行工作。当一个类加载器接收到加载类的请求时,它首先会委托其父加载器尝试加载,只有当父加载器无法找到对应的类时,才会尝试自己加载。这种设计确保了类的...
本文将深入探讨Java虚拟机中的类初始化以及加载器的父委托机制。 一、类的加载 类加载是JVM启动时或运行中根据需要动态加载类到内存中的过程。这个过程分为三个阶段:加载、链接和初始化。 1. 加载:JVM通过类...
当一个类加载器收到加载类的请求时,它首先会委托父类加载器去尝试加载,只有当父类加载器无法加载时,子类加载器才会尝试自己加载。这种设计有助于维护类加载的一致性和安全性。 4. 类加载器与类的关系: 每个类...
Java类加载器采用了**双亲委派模型(Parent Delegation Model)**,这意味着当一个类加载器收到加载类的请求时,它首先会委托其父类加载器去尝试加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。...
类加载器之间存在层次结构,当一个类加载器接收到加载类的请求时,它会先委托父类加载器去尝试加载,只有当父类加载器无法加载时,子类加载器才会尝试自己加载,这就是双亲委派模型。这种设计可以避免类的重复加载...
每个类加载器在尝试加载类时,会先委托给父类加载器,只有当父类加载器无法加载时,才会尝试自己加载。这种机制保证了Java的核心类库只被加载一次,同时也确保了类的唯一性。 Tomcat的类加载器工作流程可以总结为:...
在类加载器的层次结构中,还有一个重要的机制是双亲委托机制。这是一种代理模式,使得一个类加载器在加载类时会先委托给父加载器进行尝试,只有当父加载器无法完成这个加载任务时,子加载器才会尝试自己去加载这个类...
3. Application ClassLoader:也称为系统类加载器,负责加载用户类路径`-cp`或`-classpath`指定的所有类。 当一个类被加载时,如果它的父类加载器无法加载该类,那么会将任务委派给子类加载器。这就是著名的"委托...
双亲委派模型是Java类加载器的重要特性之一,它的基本流程是:当一个类加载器收到加载类的请求时,它首先不会自己去尝试加载这个类,而是把请求委托给父类加载器去完成,每个层次的类加载器都是如此。如果父类加载器...
类加载遵循“双亲委托模型”,即当一个类加载器收到加载类的请求时,它会首先委托父类加载器尝试加载,只有当父类加载器无法找到对应的类时,才会自己尝试加载。这样保证了基础类库的一致性,同时也允许Web应用覆盖...
自定义Java类加载器允许我们根据特定需求扩展默认的加载机制,例如,从非标准位置加载类或者实现动态加载。在Java中,类加载过程分为加载、验证、准备、解析和初始化五个阶段。 首先,让我们了解Java中的默认类加载...
当一个类加载器接收到加载类的请求时,它首先会委托父类加载器尝试加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。这样设计的目的是保证Java核心类库的稳定性,防止用户自定义类覆盖系统核心类。...
默认的类加载器包括bootstrap classloader(引导类加载器)、extension classloader(扩展类加载器)和appclassloader(应用程序类加载器),它们按照双亲委托模型进行工作,从基础到具体逐层尝试加载类。...
假设你有一个应用需要的类叫作Abc.class,首先加载这个类的请求由Application类加载器委托给它的父类加载器Extension类加载器,然后再委托给Bootstrap类加载器。Bootstrap类加载器会先看看rt.jar中有没有这个类,...