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语言写的,无法获取类名)
类加载的“双亲委派机制”
最新推荐文章于 2024-05-09 17:53:32 发布