虚拟机(八).类加载器

1.类本身和类加载器同时确定一个类的唯一性

2.类加载器的种类

(1).启动类加载器:虚拟机识别,java程序不可调用

(2).拓展类加载器:java程序可调用

(3).应用程序类加载器:java程序可调用,默认类加载器

(4).自定义类加载器

3.双亲委派模式

(1).各类加载器的层次关系:

启动类加载器==>拓展类加载器==>应用程序类加载器==>自定义类加载器

(2).双亲委派模式:

当需要调用类加载器时,自己先不加载,扔给自己的父亲,让他来。每一层的类加载器都这样。

好处:java类也因此有了层级关系

4.双亲委派模式被破坏的三种情况

(1).在双亲委派模式存在之前:因为不存在双亲委派模式,所以肯定是破坏的

(2).双亲委派模式的目的是让类加载能调用统一的基础API,但是如果当基础API需要调用用户的代码时(JNDI),解决方法如下:

        使用线程上下文类加载器。本线程如果没有,就去父类中找。如果父类中也没有,就用应用程序类加载器。

所以,此时基础API,也就是启动类加载器,需要去调用线程上下文类加载器(没有的话,就是应用程序类加载器),爷爷辈去调用孙子辈了,违反了双亲委派模式

(3).由于用户对动态性的追求,对于代码热替换,模块热部署等情况,此时都是模块化。不再是树状而是网状。访问如下:

        1).对于java.*类,调用父类类加载器;

        2).否则,对于委派列表名单的类,调用父类类加载器

        3).否则,对于import列表的类,调用export模块的类加载器

        4).否则,使用本模块的类加载器

        5).否则,使用fragment模块类加载器

        6).否则,使用Dynamic Import模块类加载器

        7).否则,报错

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鹏哥哥啊Aaaa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值