其他分享
首页 > 其他分享> > 关于类加载器的双亲委托机制

关于类加载器的双亲委托机制

作者:互联网

什么是双亲委派机制:

我们应用程序都是由引导类加载器、扩展类加载器、应用类加载器三种类加载器互相配合进行加载的,还可以加入自己定义的类加载器。称为 类加载器的双亲委派模型 ,这里类加载器之间的父子关系一般不会以继承的关系来实现,而是都使用 组合关系 来复用父加载器的。

双亲委托模型的重要用途是为了解决类载入过程中的安全性问题。
BootstrapClassLoader(引导类加载器)并没有遵守ClassLoader的加载规则。(因为引导类加载器 是由C++编写的,用本地代码实现)

工作原理:
是当一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法加载这个加载请求的时候,子加载器才会尝试自己去加载。
在这里插入图片描述
过程:

使用双亲委托机制的好处:

第一:可以避免重复加载,当父亲已经加载了该类的时候,子类不需要再次加载。

第二:考虑到安全因素,如果不使用这种委托模式,那我们就可以随时使用自定义的String来动态替代java核心api中定义类型,这样会存在非常大的安全隐患,而双亲委托的方式,就可以避免这种情况,因为String已经在启动时被加载,所以用户自定义类是无法加载一个自定义的类加载器。

标签:请求,自定义,ExtClassLoader,委托,双亲,加载
来源: https://blog.csdn.net/qq_40806970/article/details/100184817