专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

jvm:字节码执行流程

1、源代码

public class MyTest {
    public static void main(String[] args) {
        int a=10;
        int b=Short.MAX_VALUE+1;
        int c=a+b;
        System.out.println(c);
    }
}

2、编译后的字节码文件

35_1.png

3、加载

(1)常量池中的字节码载入到运行时常量池:

35_2.png

(2)方法的字节码载入到方法区:

35_3.png

4、main线程开始运行,分配栈桢内存

(1)栈内存的分配

35_4.png

局部变量表:4

最大操作数栈的深度为:2

(2)执行istore_1指令:

35_5.png

将常量10放入到1号槽位

(3)lcd #3

Short.MAX_VALUE+1是在编译时期就已经计算好了的,lcd命令将计算后的数字放入到操作数栈中

(4)istore 2

将栈顶的数据弹出,放到二号位置

35_6.png

(5)iload_1和iload_2

分别将局部变量表一号位置和二号位置的数据读取到操作数栈中:

35_7.png

35_8.png

(6)iadd

弹出操作数,并将计算结果存入到操作数栈中

35_9.png

(7)istore_3

35_10.png

5、getstatic #4

35_11.png

将System.out的引用地址存放到操作数栈中

6、iload_3

35_12.png

7、invokevirtual #5

35_13.png

找到常量池#5项

定位到方法区的方法

生成新的栈帧并传递参数,执行栈帧中的字节码

8、return

完成main方法调用,弹出main栈帧

程序结束

文章永久链接:https://tech.souyunku.com/22552

未经允许不得转载:搜云库技术团队 » jvm:字节码执行流程

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们