JVM中有栈,栈内存就是给线程用的。每个线程启动后,虚拟机就会为其分配一块栈内存。
栈中由多个栈帧组成,对应着每次方法调用时所占用的内存。
每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法。
给程序打上断点,debug模式下跟进代码,观察控制台Frames和Variables两项的变化:
public class StackDemo {
//主方法调用method1方法
public static void main(String[] args) {
method1(1);
}
//method1方法中调用method2方法
public static void method1(int a) {
a = a +1;
int b = method2(1);
}
//method2方法
public static int method2(int b) {
return b++;
}
}
栈中有一个程序计数器,是每个线程私有的&#x