一篇简短的文章来介绍双亲委派机制:
双亲委派机制工作原理: 如果一个类加载器收到一个类加载请求,这个类加载器并不会马上去这个请求,而是委托它的父类加载器 如果父类加载器上边还有类加载器则一直向上委托 直到启动类加载器(Bootstrap ClassLoader)
双亲委派机制优势: 双机委派机制作用下,java类和它的类加载器一起具有了层级关系,这样的好处是以下两点 1.避免类的重复加载 2.安全 java核心api定义的类不会被随意替换
// 输出结果为sun.misc.Launcher$AppClassLoader@18b4aac2 这里的 AppClassLoader 为应用类加载器
ClassLoader c1 = Test.class.getClassLoader();
System.out.println(c1);
// 应用类加载器
ClassLoader c2 = Student.class.getClassLoader();
System.out.println(c2);
System.out.println("===================");
// 输出结果为sun.misc.Launcher$ExtClassLoader@74a14482 这里的ExtClassloader为 扩展类加载器(Extension ClassLoader):
System.out.println(c1.getParent());
// 输出为null 这里的null 表示启动类加载器(Bootstrap ClassLoader)
System.out.println(c1.getParent().getParent());
双亲委派模型