1、什么是类加载器,其工作原理是什么?
寻找类的字节码文件并构造出类在JVM内部表示对象的组件。
在java中,类装载器将一个java类装入JVM中,必须要经过以下步骤:
a. 装载:查找和导入class文件
b. 链接:执行校验,准备,和解析步骤,其中解析步骤是可以选择的。
校验:检查装入的class文件数据的准确性
准备:给类的静态变量分配存储空间
解析:将符号引用转化为直接引用
c. 初始化 对类的静态变量,静态代码块执行初始化工作
类加载工作是由ClassLoader及其子类负责,ClassLoader是一个重要的java运行时系统组件,它负责在运行时查找和装入Class字节码文件。JVM在运行时会产生三个ClassLoader:根装载器,ExtClassLoader(扩展类装载器),AppClassLoader(系统类装载器)。其中,根装载器不是ClassLoader的子类,它使用C++编写的,因此,我们在java中看不到它,根装载器负责装载jre的核心类库,如jre下的rt.jar,charsets.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类。其中ExtClassLoader负责装载扩展目录ext中的jar类包;AppClassLoader负责装载ClassPath路径下的类包。
这三个装载器存在父子层级关系,即根装载器是ExtClassLoader的父装载类器,ExtClassLoader是AppClassLoader的父装载类器。
默认情况下,使用AppClassLoader装载应用程序的类。
JVM装载类时使用“全盘负责委托机制”,全盘负责是指当一个ClassLoader装载一个类的时,除非显示使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;委托机制是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找病装载目标类。这一点是基于安全考虑,如果有人编写了一个恶意的基础类“java.lang.String” 并装载到JVM中将会引起很可怕的后果,由于使用了“全盘负责委托机制”,java.lang.String 永远是由根装载器装载的,这样就可以避免上述事件的发生。
全盘负责委托机制也会引起一些异常比如NoSuchMethodError的错误信息。因为类路径放置了不同版本的类包,类加载碰上没有这个方法的这个版本类包,就会运行时抛出异常。
分享到:
相关推荐
JVM原理讲解和调优 JVM原理讲解和调优 JVM原理讲解和调优
浅谈jvm原理(概念,运行机制,基本架构,运行时数据区,类加载系统,垃圾回收算法,垃圾回收策略,gc参数,调优策略)
JAVA应用JVM原理及参数调优深入讲解视频.1 JAVA应用JVM原理及参数调优深入讲解视频.2 JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 ...
JAVA JVM原理资料,最新。很不错,看看吧。
06.JVM原理讲解和调优.pdf
整理好了JVM虚拟机的原理,适合初学者理论,也适合找工作面试的。内附运行图,思维导图,文字详解,并有相关算法的详解的方式供大家理解,请大家多多支持!
JAVA应用JVM原理及参数调优深入讲解视频,内容讲解透彻,内容丰富
该文档是关于java虚拟机的原理,描述及调优视频,其中,详细讲述了jvm的运行机制,类装载器,GC算法,性能监控工具,堆,锁等内容。
JVM原理
jvm原理
一、JVM概述 二、JVM的体系结构 三、JVM运行时数据区 3.1 PC寄存器 3.2 JVM栈 3.3 堆(Heap) 3.4 方法区域 3.5 运行时常量池 3.6本地方法堆栈 四、Jvm堆 五、Jvm调优
JVM 原理及工作机制JVM 原理及工作机制
首先讲述JVM的基本概念和原理、架构等。最后一HelloApp讲述JVM的工作过程
Sun JVM原理与内存管理
JVM原理.doc
jvm原理讲解的非常透彻,易懂,强烈推荐这个文章,希望大家进一步深入JVM的原理能有所帮助。
jvm原理机器调优-jvm
JVM原理-jvm内存及相关图示
详细讲解了jvm 的运行原理,以及内存分配
关于JVM虚拟机技术的一个非常不错视频教程,可以给想学习JVM原理、内存模型、性能调优等JVM技术的开发人员一个好学习指导。