`
tianshibaijia
  • 浏览: 1122786 次
文章分类
社区版块
存档分类
最新评论

分析BootstrapClassLoader/ExtClassLoader/AppClassLoader的加载路径 及"父委托机制"

 
阅读更多
分析BootstrapClassLoader/ExtClassLoader/AppClassLoader的加载路径及"父委托机制"


运行时输出如下:


BootstrapClassLoader 的加载路径:
file:/C:/jdk1.7.0_01/jre/lib/resources.jar
file:/C:/jdk1.7.0_01/jre/lib/rt.jar
file:/C:/jdk1.7.0_01/jre/lib/sunrsasign.jar
file:/C:/jdk1.7.0_01/jre/lib/jsse.jar
file:/C:/jdk1.7.0_01/jre/lib/jce.jar
file:/C:/jdk1.7.0_01/jre/lib/charsets.jar
file:/C:/jdk1.7.0_01/jre/classes
----------------------------
sun.misc.Launcher$ExtClassLoader@3e389405
扩展类加载器 的加载路径:
file:/C:/jdk1.7.0_01/jre/lib/ext/dnsns.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/localedata.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/sunec.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/sunjce_provider.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/sunmscapi.jar
file:/C:/jdk1.7.0_01/jre/lib/ext/zipfs.jar
----------------------------
sun.misc.Launcher$AppClassLoader@a200d0c
应用(系统)类加载器 的加载路径:
file:/E:/JAVA/JVM_Class_Reflect_Thread/ClassPath_of_Bootstrap_Ext_AppClassLoader/bin/
----------------------------


现在我们就知道了这三个类加载器的加载路径了:
  • BootstrapClassLoader ---加载jre/目录下的核心库

  • ExtClassLoader扩展类加载器 ---加载/jre/lib/ext/目录下的扩展包

  • AppClassLoader应用(系统)类加载器 ---加载CLASSPATH路径下的包





JDK源代码中,protected Class<?> loadClass(String name, boolean resolve)方法

已经很好地体现出"父亲委托机制":

1:先调用parent.loadClass(name, false)

2:如果父亲加载失败,则调用loadClass(name, false)方法 查找"当前类加载器"对应的"目录"来加载

public Class<?>loadClass(Stringname,boolean resolve)

此方法的默认实现将按以下顺序搜索类:

1.调用findLoadedClass(name)来检查是否已经加载类。

2.在父类加载器上调用 loadClass方法。如果父类加载器为 null,则使用虚拟机的内置类加载器。

3.调用findClass(name)方法查找类。











/////////-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

PS: 如果用户想从自定义的目录下加载类(.class文件),则可以自定义类加载器:




分享到:
评论

相关推荐

    JVM

    1,类加载机制 类的使用周期: **注意:**类加载的时候,也就是new对象时,加载顺序是:静态代码块...c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细

    详解Android类加载ClassLoader

    所谓双亲代理就是指,当加载类的时候首先去Bootstrap中加载类,如果没有则去Extension中加载,如果再没有才去AppClassLoader中去加载。从而实现安全和稳定。 Java ClassLoader BootstrapClassLoader 引导类加载器 ,...

    java8rt.jar源码-jvm:jvm入门jvm面试题

    java8 rt.jar源码 JVM探究 请你谈谈你对JVM的理解?java8虚拟机和之前的变化和...java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所

    Java虚拟机架构

    启动类加载器(BootStrapclassLoader)、扩展类加载器(ExtensionclassLoader)和应用程序类加载器(ApplicationclassLoader)这三种类加载器帮助完成类的加载。启动类加载器–负责从启动类路径中加载类,无非就是rt.jar。...

    Java-GUI介绍和使用

    GUI API包含的类分为三个部分:组件类(component class) 容器类(container class),和辅助类(helper class) 1. 组件类是用来创建用户图形界面的,例如JButton,JLabel,JTextField. 2. 容器类是用来包含其他组件的,例如JFrame,JPanel 3. 辅助类是用来支持GUI组件的,例如Color,Font

    汉诺塔c语言递归.zip

    汉诺塔c语言递归

    mybatis-plus-core-3.0.6.jar

    mybatis-plus-core.jar 各个版本,免费下载, mybatis-plus-core.jar 是 MyBatis 的增强工具核心包。免费下载 。 MyBatis-Plus(简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变,为简化开发工作、提高生产率而生。

    mybatis-plus-generator-3.4.0.jar

    mybatis-plus-generato.jar 包,各个版本,免费下载。 mybatis-plus 代码生成器生成代码框架。各个版本,免费下载。 下载不了,关注我,评论区联系我。

    2023年纺织行业分析.pptx

    行业研究

    知识领域: 网络安全 技术关键词: 漏洞分析、渗透测试、加密算法 内容关键词: 攻击防范、身份验证、网络流量分析

    stm32项目知识领域: 网络安全 技术关键词: 漏洞分析、渗透测试、加密算法 内容关键词: 攻击防范、身份验证、网络流量分析 用途: 学习保护信息系统免受恶意攻击和数据泄露 资源描述: "OWASP官方网站"提供了全面的网络安全知识和工具,包括常见漏洞、安全指南和最佳实践。

    mybatis-plus-core-2.3.3.jar

    mybatis-plus-core.jar 各个版本,免费下载, mybatis-plus-core.jar 是 MyBatis 的增强工具核心包。免费下载 。 MyBatis-Plus(简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变,为简化开发工作、提高生产率而生。

    测试YUV图像数据的具体格式(1).zip

    测试YUV图像数据的具体格式(1).zip

    多思计算机组成原理实验三 存储器实验.docx.zip

    多思计算机组成原理实验三 存储器实验.docx

    2024年金属表面处理剂行业分析报告.pptx

    行业分析报告

    st-stm32cubeide-1.15.0-20695-20240315-1429-x86-64

    st-stm32cubeide_1.15.0_20695_20240315_1429_x86_64

    调节篮球比赛定时器,毕业设计实验报告,multisim仿真,AD09原理图及PCB图.zip

    调节篮球比赛定时器,毕业设计实验报告,multisim仿真,AD09原理图及PCB图

    halcon缺陷检测笔记

    halcon缺陷检测

    JSTL需要的jar包.zip

    JSP 标准标签库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问. 如果要使用JSTL,则必须将standard-1.1.2.jar和 jstl-1.2.jar文件放到classpath中

    微电网多目标调度优化改进粒子群算法与经济性分析(文档加Matlab源码)

    本文深入探讨了微电网多目标调度问题,提出了一种改进的多目标粒子群算法(MOPSO),以实现微电网系统在经济性、可靠性和环境影响等多个目标函数之间的优化平衡。文章详细介绍了算法的改进机制,并通过案例分析展示了其在实际微电网调度中的应用效果。本研究适用于电力系统工程师、能源管理专业人士以及对智能电网和优化算法感兴趣的学者。使用场景包括微电网的规划、运行和维护,特别是在考虑经济性和环境因素时的系统优化。 关键词 微电网

    视频批量剪辑大师软件工具

    视频批量剪辑,亲测可用,操作简单,视频创作者福音

Global site tag (gtag.js) - Google Analytics