类加载器双亲委托机制详解
- 在双亲委托机制中,各个类加载器按照父子关系形成了树形结构(逻辑上的,其实是包含关系),除了根类加载器之外,其余的类加载器都有且只有一个父加载器。
-
若有一个类加载器能够成功加载Test类,那么这个类加载器被称为定义类加载器,所有能成功返回Class对象应用的类加载器(包括自定义类加载器)都被称为初始类加载器。【上上图中,系统类加载就可以称为:定义类加载器,系统类加载和loader1就可以称为:初始类加载器】
-
实例:
public class MyTest7 { public static void main(String[] args) throws ClassNotFoundException { Class<?> clazz1 = Class.forName("java.lang.String"); System.out.println(clazz1.getClassLoader()); Class<?> clazz2 = Class.forName("Jvm.D"); System.out.println(clazz2.getClassLoader()); } } class D{ } 运行结果: null --》 就根类加载器 sun.misc.Launcher$AppClassLoader@18b4aac2 --》AppClassLoader,就是系统类加载器
-