JVM的类的生命周期

简介: JVM的类的生命周期

9a62b62973f44dbeabc41caa0af110e8.png 前言

Java虚拟机(JVM)中的类生命周期包括加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Usage)和卸载(Unloading)七个阶段。

1. 加载(Loading):

在加载阶段,Java虚拟机通过类加载器找到并加载类的字节码文件。加载阶段是类生命周期的开始阶段。

2. 验证(Verification):

在验证阶段,Java虚拟机对字节码进行验证,以确保其符合Java语言规范。这一步主要是为了确保被加载的类是合法、安全的。

3. 准备(Preparation):

在准备阶段,Java虚拟机为类的静态变量分配内存并设置默认初始值。这些变量在方法区中分配内存。

4. 解析(Resolution):

在解析阶段,Java虚拟机将常量池中的符号引用转化为直接引用。这一步可以理解为在编译期间无法确定的符号引用在运行期间通过解析变为可直接引用的过程。

5. 初始化(Initialization):

在初始化阶段,Java虚拟机执行类的初始化方法(<clinit>),该方法包含类中静态变量的赋值和静态代码块的执行。初始化是类生命周期中的最后一个阶段,也是类首次主动使用的时候。

6. 使用(Usage):

在使用阶段,类被正常使用,包括对象的创建、调用类的方法等。

7. 卸载(Unloading):

在卸载阶段,Java虚拟机可以卸载已经加载的类,释放相应的内存空间。类卸载通常发生在类加载器被回收的时候,同时要求类没有任何实例存在,并且没有任何地方引用该类。


需要注意的是,类生命周期中并非所有的阶段都是必需的,例如解析阶段可以在初始化之后再进行。在实际运行中,如果一个类在初始化阶段中被执行了,那么它就会一直处于已初始化状态,不会再进入加载、验证、准备等阶段。类的生命周期是由虚拟机规范所规定的,不同的虚拟机实现可能会有一些细微的差异。

相关文章
|
4天前
|
安全 Java 编译器
Java 虚拟机加载 Java 类的过程
【6月更文挑战第7天】Java 是一门编译型语言,在完成代码的编写以后,需要使用 Java 编译器将源码编译成字节码文件,供虚拟机运行。在字节码被 Java 虚拟机执行之前,需要将对应的类进行加载。
32 3
|
2天前
|
存储 XML 安全
JVM系列5-类文件结构
JVM系列5-类文件结构
6 0
|
16天前
|
监控 Java 测试技术
滚雪球学Java(45):探秘Java Runtime类:深入了解JVM运行时环境
【5月更文挑战第20天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
18 1
滚雪球学Java(45):探秘Java Runtime类:深入了解JVM运行时环境
|
19天前
|
存储 Java 程序员
【JVM】类的声明周期(加载、连接、初始化)
【JVM】类的声明周期(加载、连接、初始化)
18 1
|
23天前
|
存储 Java 程序员
【JVM系列笔记】类生命周期
类的生命周期包括加载、连接(验证、准备、解析)、初始化、使用和卸载五个阶段。加载时,类加载器根据全限定名获取字节码,然后在方法区中创建InstanceKlass对象,并在堆上生成对应的Class对象。连接阶段验证字节码的正确性,准备阶段为静态变量分配内存并赋初始值,解析阶段将符号引用转换为直接引用。初始化阶段执行clinit方法,如静态变量赋值和静态代码块。类的初始化在访问静态成员、使用Class.forName、创建类实例或其子类时触发。
43 1
|
1月前
|
存储 前端开发 Java
深入浅出JVM(四)之类文件结构
深入浅出JVM(四)之类文件结构
深入浅出JVM(四)之类文件结构
|
1月前
|
存储 缓存 安全
JVM 类的加载篇
JVM 类的加载篇
26 0
|
1月前
|
Java
[JVM] Java类的加载过程
[JVM] Java类的加载过程
[JVM] Java类的加载过程
|
2天前
|
存储 监控 算法
【JVM】如何定位、解决内存泄漏和溢出
【JVM】如何定位、解决内存泄漏和溢出
9 0
|
2天前
|
算法 安全 Java
JVM系列4-垃圾收集器与内存分配策略(二)
JVM系列4-垃圾收集器与内存分配策略(二)
9 0
JVM系列4-垃圾收集器与内存分配策略(二)