Java Virtual Machine Stacks (Java 虚拟机栈)
我们都知道 JVM 中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟
机就会为其分配一块栈内存。
- 每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存
每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
public class TestFrames {public static void main(String[] args) {Thread t1 = new Thread(){@Overridepublic void run() {method1(20);}};t1.setName("t1");t1.start();method1(10);}private static void method1(int x) {int y = x + 1;Object m = method2();System.out.println(m);}private static Object method2() {Object n = new Object();return n;}}
以debug方式运行:

虚拟机栈就是先进后出,下图的线程就是代表一个栈,当我们运行完一个线程,线程就会被垃圾回收器回收。
每个线程里有不同的栈帧,也就是每个栈都有不同的栈帧。
