idea在debug的栈帧
我们都知道 JVM 中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟机就会为其分配一块栈内存。每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存。每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
过于耳熟能详,不在阐述。
今天是像分享idea在debug后,竟然能看到栈帧的情况:
idea的功能很多,查看字节码什么的都不在话下,以下这个功能倒是第一次见。
示例代码:
package cn.itcast.n3;
public class TestFrames {
public static void main(String[] args) {
Thread t1 = new Thread(){
@Override
public 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代码,产生main栈帧

点击下一步

进入新方法,产生新栈帧

再点击下一步

进入新方法,产生新栈帧

再继续

注意,在java中,线程运行和就绪都是RUNNING
debug还可以切换线程:

互不影响



