一、StackOverflowError
1.1、概述
StackOverflowError是栈内存溢出的意思。栈中主要存储的是8种基本数据类型 + 引用类型 + 实例方法,栈的空间也是有限的,当存储进栈中的容量大于栈的最大容量时,就会报StackOverflowError的错误。
1.2、案例
/**
* @Author : 一叶浮萍归大海
* @Date: 2023/12/20 21:45
* @Description: 演示栈内存溢出
* JVM配置如下参数:-Xss128k -XX:+PrintGCDetails
*/
public class StackOverflowErrorMainApp {
private int stackLength = 1;
public void stackLeak() {
stackLength++;
stackLeak();
}
public static void main(String[] args) {
StackOverflowErrorMainApp stackOverflowErrorMainApp = new StackOverflowErrorMainApp();
try {
stackOverflowErrorMainApp.stackLeak();
} catch (Throwable e) {
System.out.println("stackLength = " + stackOverflowErrorMainApp.stackLength);
e.printStackTrace();
}
}
}
1.3、生产上如何避免
避免死循环、递归调用。
1.4、StackOverflowError是错误还是异常
StackOverflowError是个错误,其继承体系和api说明如下: