如何理解类加载器和双亲委派机制?

类加载器图

1.类加载器可以分为两类:一种是启动类加载器(bootstrap classLoader)是由C++语言实现的,

是虚拟机的一部分;另一种是其他所有的类加载器,是由java语言实现的,独立与虚拟机之外,都

继承于抽象类java.lang.classLoader。

2.启动类加载器:加载java.lang包,javax包下的类;

3扩展类加载器:加载<JAVA_HOME>\lib\ext目录中,或者被Java.ext.dirs系统变量所指定路径中

所有的类库;

4.系统类加载器(应用程序类加载器):加载用户自定义的类(用户类路径上所有的类库)。

5.双亲委派模型的原理:

(1)把自定义的加载器挂载到应用程序类加载器

(2)应用程序类加载器将加载请求委托给扩展类加载器

(3)扩展类加载器将加载请求委托给启动类加载器

(4)启动类加载器会在加载路径下查找并加载class文件,没找到就交给扩展类加载器加载

(5)扩展类加载器也在自己的加载路径下查找并加载class文件,没找到就交给应用程序类加载器加载

(6)应用程序类加载器在自己的加载路径下查找并加载class文件,没找到,就交给自定义加载器加载

(7)如果自定义加载器也没找到目标class文件,就抛出ClassNotFound异常

6:双亲委派模型的优点:

1)避免了加载了多个相同名称的类,造成程序的混乱。比如你要调用

Java.lang包下的String类,如果你自己也写了一个Java.lang.String类,被加载了。当你要用String

类的时候,JVM就懵逼了,不知道要调用哪一个。

2)保护了java的核心类库,防止核心类库被随意篡改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_42939235

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值