`
ldwcmx
  • 浏览: 8041 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

类加载子系统

 
阅读更多

           类加载子系统是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对象和方法区。有关类的连接和初始化后文会继续讨论。

     

分享到:
评论

相关推荐

    02 类加载子系统.pptx

    02 类加载子系统 PPT 介绍 JVM 的类加载子系统, 包括类加载阶段和流程、加载器分类和类加载机制等。

    02_类加载子系统.pptx

    类加载子系统

    类加载子系统探究111.md

    类加载子系统探究111.md

    类加载子系统.xmind

    自己总结的jvm中类加载子系统的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合jvm的爱好者和学习者

    monkey-knight#OfferMe2020#02-类加载子系统1

    加载JVM 有哪些类加载器:引导类加载器扩展类加载器系统类加载器自定义类加载器不同加载器可以加载哪些类:加载器的等级:引导类加载器 > 扩展类加载器 > 系统类

    JVM解毒——类加载子系统

    带着问题,尤其是面试问题的...类加载子系统 类加载机制概念 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制

    深入理解Java虚拟机--类加载及执行子系统的案例与实战xmind文件

    深入理解Java虚拟机--类加载及执行子系统的案例与实战xmind文件

    JVM:类加载器子系统.pdf

    总结了类加载器子系统相关的内容,主要包括类加载器子系统的作用、ClassLoader角色、加载的过程、双亲委派机制以及沙箱安全机制等内容

    【隐匿的学习笔记】JVM(1) 类加载子系统

    松散了好久 回归状态 系统学习JVM 记个笔记 写点自己的理解 注: 博主所有博客内容的学习笔记都是从学习资料处学习得来,些许位置的思路会借鉴,但保证所有文章的所有内容(包括文字和图) 都是自己原创字是一个一个...

    Java虚拟机的基本结构 (2)1

    Java虚拟机的基本结构 类加载子系统类加载子系统Java堆Java堆 类加载子系统类加载子系统Java堆Java堆 本地方法栈本地方法栈直接内存直接内存Jav

    JVM--内存与垃圾回收篇1

    第二章 类加载子系统作用1、类加载子系统作用1. Class Loader SubSystem(类加载子系统)负责从文件系统或网络中加载Class Files,

    JVM-Java虚拟机

    类加载子系统;运行时数据区;对象的创建流程与内存分配; 对象内存布局;如何访问一个对象;GC基本原理;串行收集器;并行收集器; 能学到什么:1,JVM底层运行机制和原理;2JVM参数;3,垃圾回收原理;4,垃圾回收...

    JVM类加载机制详细讲解

    讲解JVM的ClassLoader子系统原理.

    CIFLOG-Smart曲线计算子系统全部代码及设计文档.zip

    基于JavaNetBeans开发平台、一体化网络测井处理解释软件平台。。。。 能够实现曲线计算器功能,对加载的曲线进行修改,弹出对话框,编写两种以上的算法,完成排序算法的单元测试等功能。

    JVM执行子系统原理

    详细介绍了JVM执行子系统的工作原理,包括类文件结构与字节码指令(Class类文件结构、JVM字节码指令简介)、JVM类加载机制(类加载器、类加载时机、类加载过程)、字节码执行引擎(运行时候的栈结构、方法调用、方法...

    电子-一种电池管理系统引导加载方法

    行业分类-电子-一种电池管理系统引导加载方法

    Learning:我的学习

    Learning ...类加载子系统; 运行时数据区; 栈 堆 方法区 设计模式; 单例模式 观察者模式 装饰者模式 工厂相关模式(简单工厂,工厂方法,抽象工厂) 生成器模式 策略模式 职责链模式 代理模式 其他item.

    电子-一种电子游戏资源的加载方法及系统

    行业分类-电子-一种电子游戏资源的加载方法及系统

Global site tag (gtag.js) - Google Analytics