JVM加载class文件的原理

野性酷女 2022-08-11 13:29 491阅读 0赞

Java中的类文件是通过类装载器装载到JVM的。装载器有BootstrapLoader, ExtClassLoader, AppClassLoader三个,分别负责加载系统类,扩展累,和应用类。BootstrapLoader不是ClassLoader的子类,由C++编写,因此在Java中看不见它,它主要是负责装载JRE的核心类库,如JRE目录下的rt.jar,charsets.jar等;ExtClassLoader是ClassLoader的子类,负责装载JRE扩展目录ext下的jar类包;AppClassLoader负责装载classpath路径下的类包。这3个类装载器存在父子层级关系,即根装载器是扩展装载器的父装载器,扩展装载器是应用装载器的父装载器。(除了JVM默认的三个ClassLoader以外,第三方可以编写自己的类装载器,以实现一些特殊的需求。)

Java装载类使用“全盘负责委托机制”。”全盘负责”是指当一个ClassLoader装载一个类时,除非显示的使用另外一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;“委托机制”是指先委托父类装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类。当碰到一个类需要加载时,类装载器会先请示其Parent使用其搜索路径帮忙载入,如果Parent找不到,那么才由自己依照搜索路径搜索类。类文件被装载解析后,在JVM中都有一个对应的java.lang.Class对象,提供了类结构信息的描述。

类装载器就是寻找类或接口字节码文件进行解析并构造JVM内部对象表示的组件。类装载器把一个类装入JVM,需要经过以下3个步骤:

(1)装载:查找和导入Class文件
(2)链接:
a)检查:检查载入的class文件数据的正确性
b)准备:给类的静态变量分配存储空间
c)解析:将符号引用转成直接引用(其中解析步骤是可选的)
(3)初始化:对静态变量,静态代码块执行初始化工作。

发表评论

表情:
评论列表 (有 0 条评论,491人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JVMclass文件原理

    类加载的主要步骤分为以下3步: 1).装载.根据查找路径找到相对应的class文件,然后导入. 2).链接.链接又可以分为3个小的步骤,具体如下.     1.检查.检查