2 类加载过程遵循双亲委派原则

类加载器一共有4种:

    ①BootstrapClassLoader:根类加载器。C/C++语言实现的。加载jre的rt.jar
    ②ExtClassLoader:扩展类加载器。负责加载jre中除rt.jar以外的jar包
    ③AppClassLoader:应用类加载器。负责加载classpath及项目中类的class文件
    ④自定义类加载:继承ClassLoader基类

jvm中的类加载器为什么要定义这样的规则,有什么好处呢?

答案:保证JDK的安全性、稳定性。

这个规则具体流程是什么样的呢?

        比如User.java文件,需要类加载器去加载它;

        先找到了AppClassLoad加载器,这个加载器有父亲,他就不想自己干了,就交给了父亲干;

        就找到了ExtClassLoad加载器,这个加载器也有父亲,也不想干了,也交给父亲干;

        就找到了BootStrapClassLoad,它没有父亲了,只能自己干;

        结果BootStrapClassLoad加载不了,就给了它的孩子ExtClassLoad加载;

        结果ExtClassLoad也加载不了,就给了他的孩子AppClassLoader加载;

        如果AppClassLoader也加载不了就给了自定义类加载器,如果自定义加载器都加载不了,那么加载失败,包ClassNotFoundException异常。比如我们平时引一个jar包没有下载完整,运行就会爆类找不到这个异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值