Java--JVM历史上有三次破坏双亲委派模型,是哪三次?

本文详细介绍了Java的类加载过程,包括加载、链接、初始化。重点讨论了双亲委派模型,解释了其作用和为什么需要这一模型。接着,文章揭示了双亲委派模型在JDK1.2之前、JNDI/JDBC、OSGI热部署以及JDK9模块系统中的四次破坏,分析了每次破坏的原因和解决方案。

这个面试题来自一位群友的面试题分享

今天我们就来盘一盘这个面试题,不过在说双亲委派模型之前,我们得先简单了解下类加载。

类加载

我们平常写的代码是保存在一个 .java文件里面,经过编译会生成.class文件,这个文件存储的就是字节码,如果要用上我们的代码,那就必须把它加载到 JVM 中。


当然,加载到 JVM 生成 class 对象的来源不一定得是.class文件,也可以来自网络等等,反正只要是符合 JVM 规范的都行。

而类加载的步骤主要分为:加载、链接、初始化。

加载

其实就是找到字节流,然后将其加载到 JVM 中,生成类对象。这个阶段就是类加载器派上用场的阶段,等下我们再细说。

链接

这个阶段是要让生成的类对象融入到 JVM 中,分别要经历以下三个步骤:

验证就是检验一下加载的类是否满足 JVM 的约束条件,也就是判断是否合规。

准备就是为加载类的静态变量申请内存空间,并赋予初始值,例如是 int 类型那初始值就是 0。

解析就是将符号引用解析成为实际引用,讲人话就是:例如 Yes 类里面引用了一个 XX 类,那一开始 Yes 类肯定不知道 XX 类在内存里面的地址,所以就先搞个符号引用替代一下,假装知道,等类加载解析的时候再找到 XX 类真正地址,做一个实际引用。

这就是解析

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值