JVM 字节码剖析
5.1 JVM 字节码概述
5.1.1 什么是 JVM 字节码
Java 源代码经过编译器编译后,就会生成 JVM 字节码,它是一种基于栈的低级、中立于平台的指令架构,每个字节码指令都会在 JVM 上执行一系列的操作,如加载、存储、运算、跳转等。它使用基于操作数栈和局部变量表的执行模型。JVM 字节码具有以下特点:
- 独立于具体的硬件和操作系统,不同平台上的 JVM 可以解释和执行相同的字节码文件。
- 相对于机器码和源代码,JVM 字节码是一种更高级别的抽象,并且比机器码更容易阅读和编写。
- JVM 字节码通过运行时的即时编译器或解释器执行。
因此,只要在不同平台上安装相应的 JVM,就能在这些平台上运行相同的字节码,这种特性为 Java 程序提供了很高的可移植性和兼容性。值得注意的是,其他编程语言也可以编译成 JVM 字节码,利用 JVM 的优势。这些编程语言叫做基于 JVM 的语言,例如 Kotlin、Groovy 等。
5.1.2 如何查看字节码
通过javap -c ${ClassName}指令就可以查看 JVM 字节码,为了更好的说明,下面通过一个简单的 Java 程序和对应的 JVM 字节码示例来进行演示:
public c