
76. 双亲委派机制
应用程序加载器接收构造 应用程序加载器发现 扩展类加载器也无法找到对应的加载器,请求继续向上委派。 最终请求会到达启动类加载器。启动类加载器检查JVM引向目录,发现
发布日期:2021-05-12 23:59:42
浏览次数:18
分类:精选文章
本文共 1204 字,大约阅读时间需要 4 分钟。
类加载器与双亲委派机制
类加载器是Java虚拟机(JVM)中一个关键的组件,它负责将Java类文件加载到内存中,使得Java程序能够运行。在JVM中,类加载器主要负责解析类文件,并确保类的正确加载和初始化。
类加载器的类型
虚拟机自带的加载器
这是JVM的一部分,负责加载核心Java类库(如java.lang)和其他基础组件。启动类(根)加载器(Boot Loader)
这是最底层的加载器,负责将JVM核心库和显式指定的类加载到内存中。扩展类加载器(Extenders Loader)
由开发者自定义,用于加载用户定义的类文件或库文件。应用程序加载器(Application Loader)
负责将用户应用程序类加载到内存中。通常用户通过双击类文件或调用java -jar
命令来运行。 双亲委派机制
双亲委派机制是Java类加载过程中的重要机制,它确保了类加载的规范性和正确性。具体流程如下:
接收请求
当某个类加载器需要加载一个类时,它首先会接收请求。委派至父类加载器
如果当前类加载器无法直接加载类(例如类没有被明确指定),它会将请求委派给其父类加载器,继续向上委派。委派终止
最终请求会被发送到启动类加载器( Boot Loader)。启动类加载器负责检查JVM引向目录(Classpath)中是否有匹配的类。决定是否加载
如果启动类加载器能够找到对应的类,它会通知父类加载器,结束委派过程并加载该类。如果无法找到匹配的类,启动类加载器会抛出ClassNotFoundException
异常,并通知调用链让父类加载器尝试其他可能的加载器。 重复循环
如果父类加载器成功加载类,整个过程会重复,直到整个类加载完成。实例分析
我们可以用一个简单的Java程序来理解类加载机制。例如:
public class String { public String toString() { return "Hello"; } public static void main(String[] args) { String s = new String(); s.toString(); }
当程序运行时,JVM的类加载器会依次处理String
类的加载。具体来说:
String
实例的请求。String
类没有被明确指定,会将请求委派给扩展类加载器。String
类并通过双亲委派机制完成加载。String
类成功被加载,程序可以正常执行。类加载器和双亲委派机制是JVM运作的关键部分,它们确保了类文件的正确加载和内存的有效管理。理解这些机制有助于改进Java程序的性能和稳定性。
发表评论
最新留言
很好
[***.229.124.182]2025年04月16日 23时47分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Hadoop(十六)之使用Combiner优化MapReduce
2019-03-06
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
IOS开发Swift笔记16-错误处理
2019-03-07
flume使用中的一些常见错误解决办法 (地址已经使用)
2019-03-07
andriod 开发错误记录
2019-03-07
C语言编译错误列表
2019-03-07
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
2019-03-07
张一鸣:创业7年,我经历的5件事
2019-03-07
git拉取远程指定分支代码
2019-03-07
《web安全入门》(四)前端开发基础Javascript
2019-03-07
python中列表 元组 字典 集合的区别
2019-03-07
python struct 官方文档
2019-03-07
Android DEX加固方案与原理
2019-03-07
Android Retrofit2.0 上传单张图片和多张图片
2019-03-07
iOS_Runtime3_动态添加方法
2019-03-07
Leetcode第557题---翻转字符串中的单词
2019-03-07
Problem G. The Stones Game【取石子博弈 & 思维】
2019-03-07