编辑
2023-11-09
JVM
00
请注意,本文编写于 548 天前,最后修改于 548 天前,其中某些信息可能已经过时。

JVM的类加载机制是Java虚拟机将类的字节码加载到内存并进行初始化的过程。这个过程包括了加载、验证、准备、解析和初始化五个阶段。下面将详细解释每个阶段的作用和顺序。

  1. 加载阶段:

    • 通过类的全限定名获取类的二进制字节流。
    • 将字节流转化为方法区的运行时数据结构。
    • 在内存中生成一个代表这个类的java.lang.Class对象,作为访问类数据的入口。
  2. 验证阶段:

    • 确保被加载的类的字节流符合虚拟机的要求,不会危害虚拟机的安全。
    • 包括文件格式验证、元数据验证、字节码验证和符号引用验证。
  3. 准备阶段:

    • 为类的静态变量分配内存,并将其初始化为默认值。
    • 只包括类变量(被static修饰的变量),实例变量将在对象实例化时分配在Java堆中。
    • 初始值通常是数据类型的默认零值,而不是在Java代码中显式赋予的值。
  4. 解析阶段:

    • 将类中的符号引用转换为直接引用。
    • 解析动作主要针对类、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符等符号引用。
  5. 初始化阶段:

    • 对类的静态变量进行初始化操作。
    • JVM负责为类变量赋予正确的初始值。
    • 静态代码块也在这个阶段执行。

加载、验证、准备和初始化这四个阶段的顺序是确定的,而解析阶段在某些情况下可以在初始化阶段之后开始,以支持Java语言的运行时绑定特性。


Learn more:

  1. 关于JVM类加载机制,看这一篇就够了 - 掘金
  2. JVM 基础 - Java 类加载机制 | Java 全栈知识体系
  3. JVM类加载机制详解,建议看这一篇就够了,深入浅出总结的十分详细! - 前程有光 - 博客园

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!