JVM 基础 - 初识 JVM
本文主要讲解 Java 虚拟机的基础,以及字节码相关知识。
JVM 是什么
JVM 全称是 Java Virtual Machine,中文名为 Java 虚拟机,是一个运行在计算机上的程序,他的职责是运行 Java 字节码文件。
JVM 的功能
解释和运行
- 对字节码文件中的指令,实时的解释成机器码,让计算机执行
内存管理
- 自动为对象、方法等奉陪内存
- 自动的垃圾回收机制,回收不再使用的内存
即时编译
- 对热点代码进行优化,提升执行效率
即时编译
JVM 提供了 即时编译(JIT)进行性能优化。最终能达到接近 C/C++ 语言的运行性能。在特定场景下甚至实现超越。
JVM 的组成
字节码文件的组成
字节码文件主要由如下 5 个部分组成:
- 基本信息:魔数、字节码文件对应的 Java 版本号、访问标识、父类和接口
- 常量池:保存了字符串常量、类或接口名、字段名,主要在字节码指令中使用
- 字段:当前类或接口声明的字段信息
- 方法:当前类或接口声明的方法信息、字节码指令
- 属性:类的属性,比如源码的文件名、内部类的列表等
基本信息
魔数:4 字节,用于标识文件类型,固定值 0xCAFEBABE
主副版本号:主副版本号是指编译字节码文件的 JDK 版本号。比如 JDK 1.8 编译的字节码文件,主版本号是 52,副版本号是 0;JDK 21 的主版本号是 65,副版本号是 0。一般只需要关心主版本号。在 JDK 1.2 之后大版本的计算方法是 主版本号 - 44
。其主要作用是用来判断当前字节码的版本和运行时的 JDK 是否兼容。