什么时候会发生栈内存溢出呢?
1.栈帧过多导致栈内存溢出 例如:【循环递归】
2.栈帧过大导致栈内存溢出 例如:【方法内的局部变量是巨大byte的类型,直接撑满了虚拟机栈】 此时需要使用XssSize 来调整我们的栈帧大小,此类场景比较少见。
package design.wlb.studyjava.demo.restudy.c4jvm专题.c12栈__内存溢出1;
public class Client {
private static int count;
public static void main(String[] args) {
try {
method1();
}catch (Throwable e){
e.printStackTrace();
System.out.println(count);
}
}
private static void method1() {
count++;
method1();
}
}
在默认情况,程序只执行了38771
我们在VM options中,修改我们的栈大小,Xss 改为256k看看,能递归多少次。
可以看到只有3000多次。
上一篇:11.jvm内存结构部分——栈的问题解析2___线程安全_tgbyhn31的博客-CSDN博客
下一篇:13.jvm内存结构部分——栈__内存溢出2_tgbyhn31的博客-CSDN博客