面试清单:JVM类加载与虚拟机执行核心障碍

news/2025/10/25 17:33:50/文章来源:https://www.cnblogs.com/ljbguanli/p/19165734

面试清单:JVM类加载与虚拟机执行核心障碍

(喜欢的觉得有用的家人们关注一下作者呗)
一、请描述一下类的生命周期,每个阶段分别对应什么逻辑?

类的生命周期从“进入内存”到“离开内存”,共7个阶段,其中验证、准备、解析统称“连接”,可以用“开一家奶茶店从筹备到停业”理解:

• 加载:租下店面、买好制冰机和奶茶粉(通过类的全限定名,比如com.example.MilkTea,找到存储该类的.class记录,读取二进制字节流,把“做奶茶的原材料”引入内存);

• 验证:检查制冰机是否漏电、奶茶粉有没有过期(校验字节流的合法性,比如是否符合JVM规范,防止恶意代码或损坏的.class文件);

• 准备:把奶茶粉分装成小袋、准备好果糖罐(为类的静态变量分配内存,设置默认初始值,比如static int sugar=0,先给sugar赋默认的0);

• 解析:学会用制冰机调温度、知道果糖罐对应哪个按钮(将类中的符号引用转为直接引用,比如把“调用MilkTea的make()方法”对应到内存中实际的途径地址);

• 初始化:预热制冰机、贴好价目表(执行类的静态代码块,给静态变量赋真正的初始值,比如把static int sugar=5中的5赋给sugar);

• 使用:接待顾客、制作并售卖奶茶(创建类的实例,调用类的方法,比如new MilkTea()、milkTea.addSugar());

• 卸载:转让店面、卖掉制冰机(类的实例被回收,类的信息从方法区删除,只有JVM退出或特殊情况才会发生)。

二、类加载的具体过程中,JVM会做哪三件关键事情?

类加载是生命周期的第一步,核心是“把外部的类数据转化为JVM能识别的内存结构”,可以用“下载并安装手机游戏”类比:

1. 获取字节流:从应用商店下载游戏的安装包(通过类的全限定名,比如com.game.Tetris,找到存储这个类的Jar包或.class文件,读取里面的二进制字节流);

2. 转化运行时结构:安装时把安装包解压成手机能识别的文件夹(比如图片、代码文件)(将字节流里的静态结构,比如类的属性、途径,转化为手段区中对应的运行时数据,比如方法表、字段表);

程序访问方法区中类数据的唯一入口,比如利用Tetris.class就能获取游戏类的所有信息)。就是3. 生成Class对象:在手机桌面创建游戏图标(在堆内存中生成一个java.lang.Class对象,这个“图标”

三、Java中的类加载器有哪几类?各自的职责是什么?

可以用“学校分发学习资料”理解,4类加载器分工明确,层层配合:

所有代码必须用的),它由C++实现,Java程序没法直接“找校长要课本”(不能直接引用);就是• 启动类加载器(Bootstrap ClassLoader):相当于学校校长,负责分发“必修课本”——Java核心类库(比如rt.jar里的java.lang包,像语文、数学课本一样,

• 扩展类加载器(Extensions ClassLoader):相当于教导主任,负责分发“选修资料”——Java扩展类库(比如jre/lib/ext目录下的Jar包,像音乐、美术的补充练习册,不是核心但能丰富功能);

• 系统类加载器(System ClassLoader):相当于班主任,负责分发“班级专属试卷”——大家自己写的Java类(通过CLASSPATH路径加载,比如项目里com包下的User、Order类,就像班主任印的单元测试卷,只给本班学生用),能通过ClassLoader.getSystemClassLoader()直接获取;

• 用户自定义类加载器(User ClassLoader):相当于家长,按需给孩子带“课外辅导书”——满足特殊需求的类,比如加载加密的.class文件(防止别人偷看代码)、从网盘下载类(不用存在本地),需要继承java.lang.ClassLoader并重写相关技巧实现。

四、什么是双亲委派机制?它的工作流程是怎样的?

双亲委派机制是类加载器的“委托原则”,核心是“先找父级,父级不行再自己来”,可能用“员工报销差旅费”类比:
先把请求“委托”给它的父加载器(部门经理);部门经理也不自己批,继续委托给父加载器(公司总监),直到最顶层的启动类加载器(CEO);就是当一个类需要加载时(比如员工要报销500元差旅费),接收请求的类加载器(普通员工)不会先自己处理,而
核心类库中的类,启动类加载器加载不了),请求会逐层往下传:总监说“我只批超过1000元的”(扩展类加载器也加载不了),部门经理说“我只批超过200元的,你自己走流程吧”(系统类加载器发现该类在CLASSPATH下),最后由普通员工对应的子加载器完成加载;如果所有父加载器都加载不了,才由最初接收请求的子加载器尝试加载。就是若是CEO说“这是部门日常开销,我不管”(比如不

五、为什么需要双亲委派机制?它能解决什么问题?

双亲委派机制的核心作用是保证应用的稳定有序,防止核心类被篡改或重复加载,许可用“学校统一发校服”理解:
学校规定所有学生必须穿蓝色校服(对应Java核心类,比如java.lang.String),校服由学校后勤部门(启动类加载器)统一采购和发放——不管哪个班级的学生(哪个子加载器),拿到的都是同一款蓝色校服,不会出现“一班穿蓝的、二班穿红的”的混乱。
如果没有双亲委派机制,某个学生(开发者)可能自己买一件红色的“仿校服”(自定义一个java.lang.String类),穿到学校后,老师(JVM)没法区分这是正规校服还是仿品,课堂秩序(程序运行)会乱;甚至有人故意在“仿校服”里藏小纸条(恶意篡改核心类),影响校园安全(程序安全)。

六、如何破坏双亲委派机制?不破坏的话又该怎么做?

双亲委派机制的“破坏”和“不破坏”,本质是对类加载器核心方法的重写,用“公司请假流程”类比:

员工家有急事,想跳过经理直接找HR批假(重写loadClass(),跳过父级流程,自己定义“先加载自己的类,再委托父级”),这就打破了原有的委托逻辑。就是• 破坏双亲委派机制:需要重写ClassLoader类的loadClass()方法。正常请假流程是“员工→部门经理→总监”(双亲委派,对应loadClass()中先调用父加载器的加载逻辑);要

• 不破坏双亲委派机制:只需重写ClassLoader类的findClass()方法。如果只是部门有特殊请假要求(比如“病假要附医院证明”),不用改整个公司的流程(不破坏双亲委派),只需在部门内部补充细则(findClass()中实现“父加载器加载失败后,按自己的规则加载类”),父加载器处理不了的请求,才会走到该方法。

七、历史上有哪三次破坏双亲委派机制的情况?分别对应什么场景?

三次破坏分别源于“历史兼容”“模型缺陷”“动态需求”,用生活化场景理解:

• 第一次破坏(历史兼容):JDK 1.2之前还没有双亲委派模型,但已经有了ClassLoader类,很多旧代码重写了loadClass()方法。为了让这些旧代码能在JDK 1.2及以后运行(比如老软件能在新系统上用),官方不能直接禁用loadClass()的重写,只能新增一个findClass()方法,引导开发者“尽量用新方法,少用旧方法”——就像老房子装暖气,不能拆了原来的煤炉(保留旧loadClass()用法),只能在旁边加新的暖气片(新增findClass()),让新老用户都能用。

• 第二次破坏(模型缺陷):双亲委派模型解决不了“父加载器需要调用子加载器的类”的问题。比如“学校制定了社团活动规则(由启动类加载器加载的核心接口),但活动需要的道具(由系统类加载器加载的第三方实现类)只能学生自己带”——学校(父加载器)的规则要用到学生(子加载器)的道具,按原模型没法搭建。于是官方加了“线程上下文类加载器”,让学校指定“社团负责人”去拿学生的道具,这就打破了“父不依赖子”的模型。

• 第三次破坏(动态需求):为了实现“热部署”(比如改了代码不用重启程序),比如OSGi框架。就像商场里的服装店(程序模块),想换新款衣服(更新代码),不用关整个商场(重启JVM),直接把整个店铺(模块+专属类加载器)换掉——OSGi给每个模块配一个类加载器,更新时连加载器一起换,模块间还能互相借货(类加载器呈网状结构),打破了双亲委派的树状结构。

八、你觉得该怎么实现一个热部署功能?核心逻辑是什么?

通过“让更新后的类替换旧类,且不用重启程序”,因为同一个全限定名的类,一个类加载器只能加载一次,所以必须“换加载器”,能够用“手机游戏更新”类比:就是热部署的核心
实现分三步:

1. 销毁旧的自定义类加载器:就像卸载手机上的旧版游戏——旧类是由旧加载器加载的,只有删掉旧加载器,旧类才会失去引用,被JVM回收(不然旧类占着内存,新类加载不进来);

2. 更新class文件:就像从应用商店下载游戏更新包——把修改后的Java类重新编译成.class记录,替换掉原来的旧材料(确保新加载的是最新代码,比如改了游戏关卡,新.class文件里就是新关卡逻辑);

3. 创建新的自定义类加载器加载新class:就像安装游戏更新包——新加载器和旧加载器是不同的实例,它加载的“新类”哪怕全限定名和旧类一样,但JVM会当它是新类,打开脚本就是新逻辑(比如点游戏图标,进去就是新关卡),建立“不重启代码更代码”的效果。

九、Tomcat的类加载机制了解吗?它为什么要破坏双亲委派模型?

Tomcat的类加载机制是“为了实现多个Web应用的类隔离”,破坏了双亲委派模型,可以用“小区里的两家便利店”类比:
Tomcat是Web容器,可能同时部署多个Web应用(比如A应用是“小区外卖系统”,B应用是“小区缴费系统”),这两个应用可能依赖同一个第三方类库的不同版本——比如A应用要用1.0版的“支付工具类”,B应用要用2.0版的“支付工具类”,两个版本都有com.tool.Pay类。
假设按双亲委派机制,Tomcat的“父加载器”会先加载1.0版的Pay类,B应用再加载时,会发现“父加载器已经加载过了”,只能用1.0版,导致B应用的新功能用不了。
故而Tomcat破坏了双亲委派:给每个Web应用分配一个专属的WebAppClassLoader,加载类时“先自己加载,加载不到再找父加载器”——就像A便利店先卖自己进的1.0版“支付设备”,B便利店先卖自己进的2.0版“支付工具”,缺的货再找小区批发商(父加载器),这样A、B应用的类互不干扰,建立了“同一个类库不同版本共存”的隔离效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年热门的用地预审技术服务供应商、市面上用地预审技术服务公司、行业内用地预审技术服务品牌、市场用地预审技术服务方案、2025年用地预审技术服务单位综合评测

摘要 用地预审技术服务行业随着国土空间规划优化和基础设施建设加速,近年来呈现快速增长趋势,2025年预计市场规模将突破百亿元。企业需高效、专业的服务支持项目审批,本文基于行业数据和服务案例,提供前十名供应商…

湿地铁魂与盐韵共生:盐城城市旅游宣传片的专业化叙事构建 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Microsoft AI Genius | 用智能 Microsoft Copilot 副驾驶 构建高韧性 DevOps 流程

在现代软件开发的快节奏环境中,DevOps 的效率与韧性已成为企业竞争力的关键。而当 AI 融入 DevOps,工作方式正被彻底重塑——从智能代码建议到自动化运维,从日志洞察到自愈基础设施,Azure 和 GitHub 的智能 Micros…

2025 年镀锌方管制造厂家最新推荐排行榜:聚焦广东佛山优质品牌,助力工程采购精准选型异形/Q235/冷轧带钢/热浸/热/冷/热镀锌方管立柱厂家推荐

引言 在建筑、交通、市政等领域高速发展的当下,热镀锌方管立柱因出色的防腐性与结构稳定性,成为工程项目核心构件。但当前市场乱象频发,部分厂商原材料以次充好、加工工艺不达标,导致产品易变形腐蚀,且售后服务滞…

AppSec与事件响应的融合实践

本文深入探讨应用安全与事件响应的交叉领域,涵盖SIEM工具使用、WAF紧急规则部署、安全设计原则以及OWASP Top 10中的日志监控漏洞等关键技术要点,帮助读者掌握应用安全事件应对的基础知识。AppSec IR | Tryhackme Aa…

当虹云

当虹云https://www.danghongyun.com/xmt/index.html

PlantAssistant-免费查看RVM/VUE

引言 依托主流工厂设计软件数字化交付数据文件,AVEVA公司PDMS/E3D的RVM和Intergraph公司SP3D的VUE:我们想把工厂数字化助手PlantAssistant做成大家设计工作中的一个好帮手。这是我们构想的PlantAssistant的一些功能,…

2025 年对焊机源头厂家最新推荐排行榜权威发布,含闪光 / 成型 / 打圈 / T 型 / 双头 T 型对焊机行业口碑榜单

引言 在工业制造领域,对焊机作为金属连接核心设备,其品质与性能直接关乎生产效率与产品质量。为帮助企业精准筛选优质对焊机源头厂家,本次《2025 年对焊机源头厂家最新推荐排行榜》由中国焊接协会联合工业设备测评中…

2025年市面上双曲铝单板品牌、行业内双曲铝单板厂家、市场双曲铝单板产品、目前双曲铝单板供应商、口碑好的双曲铝单板公司排行榜

摘要 随着建筑行业向绿色、高效方向发展,双曲铝单板作为高端幕墙材料,市场需求持续增长。2025年,行业预计将保持15%的年增长率,得益于城市化进程和环保政策推动。本文基于市场调研和用户反馈,提供双曲铝单板品牌排…

2025市面上双曲铝单板品牌、行业内双曲铝单板厂家、市场双曲铝单板产品、口碑好的双曲铝单板厂家、2025年双曲铝单板供应商权威排名

摘要 双曲铝单板作为高端建筑幕墙材料,近年来在城市化进程和绿色建筑趋势推动下,行业年增长率稳定在15%以上(数据来源:中国建筑装饰协会,2024年报告)。本文基于市场调研、用户反馈和技术参数,综合评测2025年双曲…

2025市面上双曲铝单板品牌、行业内双曲铝单板生产厂家、市场双曲铝单板供应厂家、目前双曲铝单板实力厂家、口碑好的双曲铝单板公司排行榜

摘要 双曲铝单板作为现代建筑幕墙和装饰材料的重要组成部分,近年来随着城市化进程和绿色建筑趋势的推动,行业规模持续扩大,预计2025年全球市场规模将突破百亿美元。双曲铝单板以其轻质、耐候、可塑性强等优势,广泛…

2025 年调直机厂家最新推荐排行榜权威发布:聚焦伺服 / 高速 / 铁线 / 扁铁机型,揭秘行业优质企业

引言 调直机作为金属加工核心设备,其品质直接决定下游产业生产效率,当前市场却面临 30% 以上中小企业产品精度不足 2mm 的痛点。为破解选型难题,本次联合中国机械工业金属成形协会开展权威测评,形成 2025 年调直机…

2025年10月杭州茅台酒回收服务商全景解析报告,基于专业测评的技术、性能及市场优势深度分析

随着高端酒类消费市场的持续升温,茅台酒回收行业正逐步走向规范化、专业化,服务品质与价格透明度成为消费者关注的核心要素。 茅台酒回收服务涉及原箱茅台、飞天茅台、生肖茅台、年份茅台等多个品类,不同品类在回收…

2025年市面上中压电缆品牌、行业内中压电缆公司、口碑好的中压电缆品牌、有实力的中压电缆产品、中压电缆公司推荐榜单深度解析

摘要 中压电缆行业在2025年迎来快速发展,随着新能源、智能电网和工业自动化的推进,市场需求持续增长。行业注重技术创新、品质管控和绿色环保,领先企业通过专利技术和严格标准提升竞争力。本文基于权威数据和用户反…

2025年市面上中压电缆品牌、行业内中压电缆公司、口碑好的中压电缆产品、2025年中压电缆公司、中压电缆厂家推荐榜单权威评测

摘要 中压电缆行业在2025年预计将持续增长,受新能源、智能电网和基础设施建设驱动,市场规模有望突破千亿元。本文基于权威数据和用户反馈,整理出排名前十的中压电缆公司榜单,为行业采购和投资提供参考。榜单综合考…

2025年10月导电炭黑厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析

导电炭黑作为特种功能材料,在锂电、涂料、塑料等领域的应用正随着产业升级而持续扩大,2025年全球市场规模预计突破286亿元,中国成为全球最大消费市场,占比升至48%。 导电炭黑技术正朝着高导电性、低添加量、易分散…

全新的图形化AI编程软件——aily blockly公测来咯

aily Project是一个硬件开发集成环境,计划集成诸多AI能力,帮助硬件开发者更畅快的进行开发。 aily Blockly是aily Project下的blockly IDE,前期面向非专业用户提供AI辅助编程能力,长远目标是打破专业开发和非专业开…

CF1984E

题目大意: 你现在有一棵树,每次你可以选择一个点,将这个点变成根,然后递归处理他的大小不为 1 的儿子们。 请问度数为 1 的点的数量最多有多少。 \(n \le 2 \times 10^5\)。 解题思路: 考虑简化他的题意,考虑什么…

2025年市面上美国留学品牌、口碑好的美国留学产品、2025年美国留学渠道商、评价高的美国留学服务商、美国留学品牌推荐榜综合评测

摘要 随着全球教育国际化趋势加速,美国留学行业在2025年持续增长,市场规模预计突破百亿美元,学生和家长对服务商的专业性、可靠性和口碑要求日益提高。本文基于行业数据和用户反馈,为您呈现前十名美国留学服务商排…

2025年市面上美国留学品牌、2025年美国留学品牌、口碑好的美国留学品牌、热门的美国留学品牌、美国留学品牌推荐榜深度评测

摘要 美国留学行业近年来持续增长,据教育部门数据显示,2024年中国赴美留学生人数超过35万,同比增长8%。行业竞争加剧,学生和家长更需要可靠的服务商来保障申请成功率。本文基于市场调研和用户反馈,整理出2025年美…