java JVM加载class的流程是什么?jvm如何加载class?

TheDisguiser 2020-06-30 16:56:16 java常见问答 3536

小伙伴们知道在java中JVM是如何加载class的吗?它的流程是什么呢?下面就由小编带你一起了解看看吧。

JVM加载原理

装载概念

什么是装载?所谓装载就是寻找一个类或一个接口的二进制形式并用该二进制形式来构造代表这个类或这个接口的class对象的过程。

JV中类的装载

JVM中类的装载通常是由ClassLoader与它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

Java中类装载器装载类到虚拟机

在Java中,类装载器会把一个类装入java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备、解析。

装载:查找和导入类或接口的二进制数据;

链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;

校验:检查导入类或接口的二进制数据的正确性;

准备:给类的静态变量分配并初始化存储空间;

解析:将符号引用转成直接引用;

初始化:激活类的静态变量的初始化Java代码和静态Java代码块。

Java的类装载模型

Java的类装载模型可以说是一种代理(delegation)模型。当虚拟机要求类装载器ClassLoader开始装载一个类时,CL首先就会把这个类装载请求转发给他的父装载器。

Java类装载器的体系结构如下所示:

java JVM加载class的流程  jvm如何加载class

JVM加载class

类加载过程如下:

总的来说一共经历了四个阶段,这四个阶段分别是加载、连接、初始化、使用。

在这四个阶段当中,连接又涵盖了验证、准备、解析这3个步骤。

如图:

java JVM加载class的流程  jvm如何加载class  

但是要注意了,Java语言本身支持运行时绑定,所以说,解析阶段也可以是在初始化之后进行的。

除此之外,还要注意,上面的这些顺序,说的都只是开始的顺序,但是,实际上来说的话,过程是交叉进行的,加载过程当中,很有可能验证就已经开始了。

以上就是关于JVM加载class文件流程的所有内容,更多相关java常见问题及答案请持续关注奇Q工具网了解详情吧。

推荐阅读:

JVM调优,JVM如何调优?

JVM的内存模型是指什么?JVM的内存如何分配?

JVM是什么意思?深入理解jvm