天天看点

类加载的“双亲委派机制”

JVM在加载类时默认使用“双亲委派机制”。就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。

public static void main(String[] args) {

ClassLoader c1=

ClassLoader.getSystemClassLoader();

//1)AppClassLoader (加载我们自己写的类)

System.out.println(c1.getClass());

//2)ExtClassLoader (加载JRE/lib/ext)

ClassLoader c2=c1.getParent();

System.out.println(c2.getClass());

//3)BootstrapClassLoader (加载Jre/lib)

ClassLoader c3=c2.getParent();

System.out.println(c3);

}

运行结果:

class sun.misc.Launcher A p p C l a s s L o a d e r c l a s s s u n . m i s c . L a u n c h e r AppClassLoader class sun.misc.Launcher AppClassLoaderclasssun.misc.LauncherExtClassLoader

null(顶级父类了,所以为null,是用C语言写的,无法获取类名)

继续阅读