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、编译后的字节码文件

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

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

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

局部变量表:4
最大操作数栈的深度为:2
(2)执行istore_1指令:

将常量10放入到1号槽位
(3)lcd #3
Short.MAX_VALUE+1是在编译时期就已经计算好了的,lcd命令将计算后的数字放入到操作数栈中
(4)istore 2
将栈顶的数据弹出,放到二号位置

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


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

(7)istore_3

5、getstatic #4

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

7、invokevirtual #5

找到常量池#5项
定位到方法区的方法
生成新的栈帧并传递参数,执行栈帧中的字节码
8、return
完成main方法调用,弹出main栈帧
程序结束