类加载子系统是JVM体系中用于加载类的二进制字节码的重要组成部分,当一个类编译为class文件后,虚拟机便可以加载它。
最底层的加载器是启动类加载器,它是虚拟机的组成部分,一般是c语言实现的,当然具体的虚拟机可以有不同的语言实现,它主要负责加载sun.boot.class.path下的java核心的类。还有一个是扩展类加载器,负责加载java.ext.dirs包下的类。最后是系统类加载器,负责加载java.class.path下的类,当然开发者还可以实现自己的类加载器来加载自己开发的类。我使用的是hotspot(TM)虚拟机。
public static void main(String[] args) {
System.out.print(System.getenv());//输出系统环境变量
System.out.println(System.getProperties());//输出系统属性
System.out.println(Thread.currentThread().getContextClassLoader().getParent());//输出扩展类加载器,它是系统类加载器的父类
System.out.println(Thread.currentThread().getContextClassLoader().getParent().getParent());//输出启动类加载器为null
}
当我们自己实现一个框架的时候可以通过继承java.lang.ClassLoader类来实现自己的类加载器来加载框架核心代码。
类加载器之间的关系是继承关系,启动类加载器是扩展类加载器的父类,扩展类加载器是系统类加载器的父类,用户自定义类加载器是系统加载器的子类,在加载一个类的时候加载器之间是委托关系,子类委托父类进加载,如果父类不能加载则由子类加载,这种机制有传递关系,就是说父类发现要加载的类不是它应该加载目录下的类,则提交给它的父类加载,直到启动类加载器,如果启动类加载器发现也不是它应该加载目录下的类,则有它自己加载,这种机制是出于安全性的考虑,当你想加载一个类来篡改父类加载器加载的类是不可能的。
命名空间是由类加载器和完整包名组成的,同一个命名空间下的类可以相互访问。
jdk中提供的自定义加载器有java.security.SecureClassLoader,java.net.URLClassLoader,javax.management.loading.MLet,它们之间是继承关系。
当类被加载完成之后,虚拟机做了哪些操作呢?
实际上虚拟机把加载进来的代码放置到方法区中,并解析了二进制class文件,并在堆内存中创建一个Class类型的对象与之关联,这个Class对象保存类的数据结构,之后虚拟机在连接和初始化阶段直接操作这个Class对象和方法区。有关类的连接和初始化后文会继续讨论。
分享到:
相关推荐
内容概要:本文详细介绍了基于STM32单片机的激光雕刻机控制系统的设计。系统包括硬件设计、软件设计和机械结构设计,主要功能有可调节激光功率大小、改变雕刻速率、手动定位、精确雕刻及切割。硬件部分包括STM32最小系统、步进电机驱动模块、激光发生器控制电路、人机交互电路和串口通信电路。软件部分涉及STM32CubeMX配置、G代码解析、步进电机控制、激光功率调节和手动定位功能的实现。 适合人群:对嵌入式系统和激光雕刻机感兴趣的工程师和技术人员。 使用场景及目标:① 适用于需要高精度激光雕刻的应用场合;② 为开发类似的激光雕刻控制系统提供设计参考。 阅读建议:本文提供了详细的硬件和软件设计方案,读者应结合实际应用场景进行理解,重点关注电路设计和代码实现。
白色简洁风格的前端网站模板下载.zip
HarmonyException如何解决.md
sdfsdfdsfsdfs222
html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+j
usbgps2.apk
白色简洁风格的家居建材网站模板下载.zip
EventEmitError解决办法.md
白色简洁风格的工艺品展览企业网站源码下载.zip
matlab调制解调 OFDM OTFS 16qam qpsk ldpc turbo在高斯白噪声,频率选择性衰落信道下的误比特率性能仿真,matlab代码 OFDM simulink 包括添加保护间隔(cp),信道均衡(ZF MMSE MRC MA LMSEE) 代码每行都有注释,适用于学习,附带仿真说明,完全不用担心看不懂
build(1).gradle
贴标飞达sw16全套技术资料100%好用.zip
其实这就是历年摘出来的
内容概要:本文针对大规模高分辨率遥感图像的处理问题,提出了一种基于图像分块的可扩展区域合并分割框架。传统的图像分块方法会导致分块边界上的伪影,影响最终结果。为解决这一问题,文中定义了稳定性边缘的概念,并给出了其数学表达,以确保分割结果与不分块时相同。此外,文章还介绍了一种高效的框架实现方法,用于在资源受限的设备上处理大型图像。 适合人群:从事遥感图像处理、计算机视觉及地理信息系统相关领域的研究人员和技术人员。 使用场景及目标:适用于需要处理大规模高分辨率遥感图像的应用场景,如环境监测、自然资源管理等。主要目标是提供一种能够高效处理大规模图像同时保持分割质量的方法。 其他说明:实验结果表明,所提出的算法不仅能够避免分块边界的伪影,而且能够在不同尺度下获得与不分块处理相同的分割结果。
白色简洁风格的手机图片展示博客网站模板.rar
白色简洁风格的外科医疗整站网站源码下载.zip
基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计),本资源中的源码都是经过本地编译过可运行的,评审分达到98分,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、毕业设计、期末大作业和课程设计使用需求,如果有需要的话可以放心下载使用。 基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医
在线式缠绕膜机自动覆膜缠绕机sw16全套技术资料100%好用.zip
.archivetemp阅读天数.py