双亲委派机制
在了解双亲委派机制,让我们先了解一下。JVM的三种类加载器。
1.bootstrap classLoader(引导类加载器)
2.extension classLoader ( 延期类加载器)
3.app classLoader(应用类加载器)
以JVM加载机制为例,java虚拟机将java类文件通过classLoader(类加载器)加载到JVM内存中。类加载器分为三个等级。
当需要加载某个类的时候,会看看这个类是否已经被加载了,如果没有,会请求app 级来加载,app 请求 extension 级 extension 请求 bootstrap级, 由最高级来负责加载(这个就是双亲委派,委托 上两级的loader来做加载),如果高级的无法加载 则会将人物返回给 下一级 以此类推 最后如果双亲都不行 就由自己来加载。
为什么需要双亲委派机制?
比如 java.lang.String 这个类,这个是jdk提供的类, 如果我们自定义个 包名:java.lang 然后在里面创建一个String 类, 当我在用String类的时候,根据前面所说,是由bootstrap级的loader 来进行加载的,这个时候它发现其实已经加载过了jdk的String了,那么就不会去加载自定义的String了,防止了重复加载 也加大了安全性。
个人理解,有问题谢谢指正!