JVM 基础 - 初识 JVM

本文主要讲解 Java 虚拟机的基础,以及字节码相关知识。

JVM 是什么

JVM 全称是 Java Virtual Machine,中文名为 Java 虚拟机,是一个运行在计算机上的程序,他的职责是运行 Java 字节码文件。

JVM 的功能

  1. 解释和运行

    • 对字节码文件中的指令,实时的解释成机器码,让计算机执行
  2. 内存管理

    • 自动为对象、方法等奉陪内存
    • 自动的垃圾回收机制,回收不再使用的内存
  3. 即时编译

    • 对热点代码进行优化,提升执行效率

即时编译

JVM 提供了 即时编译(JIT)进行性能优化。最终能达到接近 C/C++ 语言的运行性能。在特定场景下甚至实现超越。

JVM 的组成

字节码文件的组成

字节码文件主要由如下 5 个部分组成:

  • 基本信息:魔数、字节码文件对应的 Java 版本号、访问标识、父类和接口
  • 常量池:保存了字符串常量、类或接口名、字段名,主要在字节码指令中使用
  • 字段:当前类或接口声明的字段信息
  • 方法:当前类或接口声明的方法信息、字节码指令
  • 属性:类的属性,比如源码的文件名、内部类的列表等

基本信息

魔数:4 字节,用于标识文件类型,固定值 0xCAFEBABE

主副版本号:主副版本号是指编译字节码文件的 JDK 版本号。比如 JDK 1.8 编译的字节码文件,主版本号是 52,副版本号是 0;JDK 21 的主版本号是 65,副版本号是 0。一般只需要关心主版本号。在 JDK 1.2 之后大版本的计算方法是 主版本号 - 44。其主要作用是用来判断当前字节码的版本和运行时的 JDK 是否兼容。