类加载器专题

一.类加载器的分类

JDK自带有三个类加载器:引导ClassLoader、ExtClassLoader、AppClassLoader。

BootStrapClassLoader

BootStrapClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA HOME%6lib下的jar包和class文件

ExtClassLoader

ExtClassLoader是AppClassLoader的父类加载器,负责加载%JAVA HOME%/lib/ext文件夹下的jar包和class类。

AppClassLoader

AppClassLoader是自定义类加载器的父类,负责加载classpath 下的类文件。

重点提醒,三个类加载器的父子类关系并不是extend 继承的子父类关系,而是逻辑上的子父类,是通过他们当中的一个变量实现的。

三者都继承ClassLoader实现自定义类加载器。
在这里插入图片描述在这里插入图片描述

二.双亲委派机制

​ 1. 委派的过程就是一层一层向上找的过程。只要当前加载器加载过,就不会重新加载。如果没有加载过,会向上寻找是否加载过。

​ 2. 当加载到Bootstrap ClassLoader后会一层一层的向下判断是否可以进行加载,如果能加载则加载。如果不能加载向下一层寻找下个加载器是否能加载。如果到最后一层都无法加载则报ClassNotFoundException。
在这里插入图片描述
好处:避免核心类的串改(优先Bootstrap classloader),避免重复加载(加载一次就不加载)。

源码如下:

在这里插入图片描述

如果你有任何问题、意见或建议,都欢迎在评论中分享。让我们继续分享知识,共同成长,一起走向更加美好的未来。感谢你们的阅读,祝愿你们在未来的道路上一帆风顺!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值