jvm 双亲委派模型

Java13的双亲委派模型:

jvm中的ClassLoader通常采用双亲委派模型,要求除了启动类加载器以外,其余的类加载器都应该有自己的父级类加载器。这里的父子关系是组合而不是继承,工作过程如下:

1.一个类的加载器收到类的加载请求以后,首先搜索他的内建加载器定义的所有“具名模块”

2.如果找到了合适的模块定义,将会使用该加载器来加载

3.如果class没有在这些加载器定义的具名模块中找到,那么将会委托给父类加载器,直到启动类加载器。

4.如果父级加载器反馈它不能完成加载请求,比如在他的搜索路径下找不到这个类,那子的类加载器才来自己加载

5.在类路径下找不到的类将成为这些加载器的无名模块

Java8 的双亲委派模型:

如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去完成加载。

 

双亲委派模型的机制和作用:

1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。
2、保证核心.class不能被篡改。通过委托方式,不会去篡改核心.clas,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全。


破坏双亲委派模型:


参考博客:

 

https://blog.csdn.net/hu_zhiting/article/details/107320391

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值