Java源文件中的代码是如何被JVM执行的

java 代码
Java源文件中的代码是如何被JVM执行的

编译代码
上面的代码只有我们人类能够认识,JVM虚拟机是不认识的,所以为了让虚拟机能够执行,我们还需要把它编译一下,编译命令:
Java源文件中的代码是如何被JVM执行的
编译完以后会生成一个Test.class文件,这个文件就是虚拟机能够读懂的执行文件了,内容如下图所示:
Java源文件中的代码是如何被JVM执行的

如何查看classfile文件的内容
class文件虽然虚拟机能读懂,但是我们人类取读的话就比较费力的。如果你想要了解这个文件的内容可以借用javap这个工具。查看命令:
Java源文件中的代码是如何被JVM执行的

执行完这个命令以后,就能够得到下图所示的内容了:
其中红框所示的内容就是我们上面calc方法的字节码对应的助记符。
Java源文件中的代码是如何被JVM执行的

Java字节码是如何被虚拟机执行的
我们可以从上面的classfile中找到calc方法的字节吗:

Java源文件中的代码是如何被JVM执行的

这些字节码和javap命令输出的calc方法的助记符是一一对应的。

同时从classfile中我们可以知道calc方法对应的代码需要深度为2的操作数栈和4个Slot的局部变量空间。有了这些信息我们就可以画出calc方法执行过程动画了:

Java源文件中的代码是如何被JVM执行的

转载自
https://www.toutiao.com/i6674491109969756685/