关注
1. 定义
- 双亲委派机制是Java虚拟机(JVM)加载类的一种机制。当一个类加载器(ClassLoader)收到类加载请求时,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。只有当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到对应的类)时,子加载器才会尝试自己去加载。
2. 类加载器层次结构
- 启动类加载器(Bootstrap ClassLoader):它是最顶层的类加载器,负责加载Java核心类库,如 java.lang.Object 等。它是由C++实现的,是JVM的一部分,没有对应的Java类。
- 扩展类加载器(Extension ClassLoader):它的父加载器是启动类加载器。主要负责加载Java的扩展类库,位于 jre/lib/ext 目录下的类。
- 应用程序类加载器(Application ClassLoader):也叫系统类加载器,它的父加载器是扩展类加载器。它负责加载用户类路径( classpath )下的类,这是我们在开发应用程序时最常用的类加载器。
3. 工作过程示例
- 假设我们在应用程序中使用了 java.util.ArrayList 这个类。当应用程序类加载器收到加载 ArrayList 的请求时,它会先把这个请求委派给父加载器(扩展类加载器)。扩展类加载器又会把请求委派给它的父加载器(启动类加载器)。启动类加载器会在自己负责的核心类库中查找 ArrayList ,找到后就加载这个类。如果启动类加载器没有找到,就会把请求返回给扩展类加载器,扩展类加载器在自己的扩展类库中查找,以此类推。只有当所有父加载器都无法加载时,应用程序类加载器才会自己尝试在 classpath 中查找和加载 ArrayList 。
4. 优势
- 安全性:可以保证Java核心类库的安全性。例如,用户不能自己定义一个 java.lang.Object 类来替代JVM中的核心 Object 类,因为启动类加载器会优先加载真正的核心类库中的 Object 类。
- 避免重复加载:保证类在整个JVM中只加载一次。如果父加载器已经加载了某个类,子加载器就不需要再加载,提高了加载效率并且避免了冲突。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
查看21道真题和解析 点赞 评论 收藏
分享
查看23道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 你会和mentor进行deeptalk吗?2222
- 2... 金丹后期牛友!我们新年再见1587
- 3... 双非本2025秋招总结:65w+SSP三选一,最终还是“有鹅选鹅”|附面试心路历程1449
- 4... 牛客运营们,我保证这是我最后一次消费烤肠了!1360
- 5... 写给后辈们的一封信, 希望能帮助到你找第一份工作时少踩坑1333
- 6... 希望新的一年,我依然是走向幸福的那个人1190
- 7... 学院本 末 211 硕勇闯 java 后端实习美团 oc 逆袭指南1149
- 8... 27届学院本一段中厂一段中大厂实习,简历求锐评854
- 9... 分享一则小红书 说得真的很好(òωó)👍822
- 10... 脑抽给面试官唱了一首英文歌809
正在热议
更多
# 对2025年忏悔 #
5798次浏览 113人参与
# 互联网行业现在还值得去吗 #
47948次浏览 356人参与
# 实习没人带,苟住还是跑路? #
14275次浏览 284人参与
# 春招前还要继续实习吗? #
6425次浏览 82人参与
# 元旦假期你打算怎么过 #
9179次浏览 182人参与
# 移动求职进展汇总 #
18730次浏览 149人参与
# 你找工作的时候用AI吗? #
166001次浏览 865人参与
# 国企秋招,你投了吗? #
55279次浏览 364人参与
# 面试官问过你最刁钻的问题是什么? #
11345次浏览 110人参与
# 职场新人生存指南 #
491677次浏览 9517人参与
# 一人说一家双休的公司 #
8374次浏览 105人参与
# 大家实习都在做什么? #
9260次浏览 101人参与
# 我们是不是被“优绩主义”绑架了? #
9837次浏览 306人参与
# 我的AI电子员工 #
24444次浏览 155人参与
# 你觉得专业和学校哪个对薪资影响最大 #
87759次浏览 587人参与
# 非技术岗薪资爆料 #
469016次浏览 3013人参与
# 你认为哪些项目算烂大街? #
79574次浏览 629人参与
# 新年的第一句祝福 #
51163次浏览 377人参与
# 巨人网络求职进展汇总 #
183986次浏览 1223人参与
# 领导秒批的请假话术 #
30741次浏览 121人参与
