双亲委派模型

 图中三个类加载器都是jdk自带的(JVM默认的类加载器)

AppClassLoader的父加载器是ExtClassLoader,ExtClassLoader的父加载器是BootStrapClassLoader

JVM加载一个类时,会调用AppClassLoader的loadClass方法加载这个类,不过在这个方法中,会先使用ExtClassLoader的loadClass方法来加载类,同样ExtClassLoader的loadClass方法中会先使用BootStrapClassLoader来加载类,如果BootStrapClassLoader加载到了就直接成功,如果BootStrapClassLoader没有加载到,那么ExtClassLoader就会尝试自己加载该类,如果没有加载到,那么则会由AppClassLoader来加载这个类

所以双亲委派是指JVM加载类时,会委派给Ext和BootStrap进行加载,如果没有加载到才由自己来加载

向上委派实际就是查找缓存,向下查找找的是加载路径

 注:向上委派到顶层加载器为止,向下查找到发起加载的加载器为止

双亲委派模型的好处:

主要是为了安全性,避免用户自己编写的类动态替换掉java的一些核心类,比如String

同时也避免了类的重复加载,因为JVM区分不同的类,不仅仅是根据类名,相同的class文件被不同的classLoader加载就是不同的类

我们也可以自定义类加载方法,从而不用JVM的默认加载机制,比如tomcat就自定义了类加载器,因为如果tomcat中部署了多个应用,且不同应用中有相同的类名但是类的方法等都不一样的,就不能共用JVM默认的类加载机制了,tomcat使用了自定义的类加载器针对每一个应用都会对应一个类加载器实例,这样不同应用的类就形成了一个隔离

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值