深入理解与调整 Java 字节码
1. JVM 指令集
Java 源文件会被编译成遵循特定格式的二进制类文件。每个 Java 方法的逻辑由 JVM 规范中定义的一组基本 JVM 指令表示。JVM 指令类似于机器代码的基本命令,每条指令由操作码(opcode)和零个或多个表示操作参数的操作数组成。在类文件中,指令以二进制流的形式存储,表示方法的 Code 属性。操作码存储为 1 个字节,后面可以跟着表示操作数数据的字节。
例如,以下是示例 Java 源代码及其对应的字节码表示:
示例 Java 源代码(Listing 17.1) :
int i = 0;
i = i + 1;
System.out.println(i);
字节码表示(Listing 17.2) :
0 iconst_0
1 istore_1
2 iinc 1 by 1
5 getstatic #21 <java/lang/System.out>
8 iload_1
9 invokevirtual #27 <java/io/PrintStream.println>
12 return
大多数指令都很简单,很容易将指令追溯到它们所代表的源代码。例如, iconst_0 定义一个值为 0 的整数常量, istore_1 将栈顶
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



