Java面试题17-类加载器的双亲委派模型

Java面试题17-类加载器的双亲委派模型

双亲委派机制

JVM中存在三个默认的类加载器:
1、BootstrapClassLoader
2、ExtClassLoader
3、AppClassLoader

AppClassLoader的父加载器是ExtClassLoader,ExtClassLoader的父加载器是BootstrapClassLoader。

在这里插入图片描述

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

所以双亲委派机制指的是,JVM在加载类时,会委派给Ext和Bootstrap进行加载,如果没加载到才由自己进行加载。

原理

  • 如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父亲的加载器去执行。
  • 如果父类加载器还存在父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器(引导类加载器)
  • 如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务子加载器才会尝试自己加载,这就是双亲委派机制。

优点

  • 提升了类加载的效率,避免类的重复加载
  • 保护程序安全,防止核心API被随意篡改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值