- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JVM类加载
JVM类加载
本文是上篇JVM详解的后续.讲解JVM的ClassLoader子系统原理.
若有疑问 HYPERLINK mailto:ymkyve501@ ymkyve501@
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc260247647 1.Java虚拟机类加载器结构简述 PAGEREF _Toc260247647 \h 2
HYPERLINK \l _Toc260247648 1.1JVM三种预定义类型类加载器 PAGEREF _Toc260247648 \h 2
HYPERLINK \l _Toc260247649 1.2类加载双亲委派机制介绍和分析 PAGEREF _Toc260247649 \h 2
HYPERLINK \l _Toc260247650 1.3类加载双亲委派示例 PAGEREF _Toc260247650 \h 8
HYPERLINK \l _Toc260247651 1.4java程序动态扩展方式 PAGEREF _Toc260247651 \h 10
HYPERLINK \l _Toc260247652 1.5常见问题分析 PAGEREF _Toc260247652 \h 11
HYPERLINK \l _Toc260247653 2.再分析类加载 PAGEREF _Toc260247653 \h 17
1.Java虚拟机类加载器结构简述
1.1JVM三种预定义类型类加载器
我们首先看一下JVM预定义的三种类型类加载器,当一个 JVM 启动的时候,Java 缺省开始使用如下三种类型类装入器:
启动(Bootstrap)类加载器:引导类装入器是用本地代码实现的类装入器,它负责将 Java_Runtime_Home/lib 下面的类库加载到内存中。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。
标准扩展(Extension)类加载器:扩展类加载器是由 Sun 的 ExtClassLoader(sun.misc.Launcher$ExtClassLoader) 实现的。它负责将
Java_Runtime_Home /lib/ext 或者由系统变量 java.ext.dir 指定位置中的类库加载到内存中。开发者可以直接使用标准扩展类加载器。
系统(System)类加载器:系统类加载器是由 Sun 的 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。开发者可以直接使用系统类加载器。
除了以上列举的三种类加载器,还有一种比较特殊的类型就是线程上下文类加载器,这个将在后面单独介绍。
Bootstrap ClassLoader/启动类加载器主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.
?
Extension ClassLoader/扩展类加载器主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作
?
System ClassLoader/系统类加载器主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作.
?
User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性.
1.2类加载双亲委派机制介绍和分析
在这里,需要着重说明的是,JVM在加载类时默认采用的是双亲委派机制。通俗的讲,就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。关于虚拟机默认的双亲委派机制,我们可以从系统类加载器和标准扩展类加载器为例作简单分析。
图一 标准扩展类加载器继承层次图
图二 系统类加载器继承层次图
通过图一和图二我们可以看出,类加载器均是继承自java.lang.ClassLoader抽象类
您可能关注的文档
最近下载
- 教师口语基础.pptx VIP
- 周杰伦所有歌词(14张专辑-包括床边的故事)呕心沥血已经整理完毕可打印.doc VIP
- 2025年秋期部编人教版四年级上册语文全册核心素养教案(教学反思无内容+二次备课版).pdf
- 箱式破碎机技术参数.docx VIP
- 贯入法检测砂浆计算表(自动计算2017).xls VIP
- 2025届河南资本集团投资公司校园招聘启动笔试上岸历年真考点题库附带答案详解.doc
- 【2025秋新版】【二升三年级语文】 必背古诗30首全文.pdf VIP
- 《教师职业道德与学前教育政策法规》课程教学大纲.docx
- 北师大版九年级数学上册课程纲要.doc VIP
- 初中生物新教材培训心得.pptx
文档评论(0)