是什么原因导致java.lang.StackOverflowError
2022-08-31 10:04:38
什么会导致 ?我得到的堆栈打印输出根本不是很深的(只有5种方法)。java.lang.StackOverflowError
什么会导致 ?我得到的堆栈打印输出根本不是很深的(只有5种方法)。java.lang.StackOverflowError
检查是否有任何对方法的回避调用。主要是在对方法进行递归调用时引起的。一个简单的例子是
public static void main(String... args) {
Main main = new Main();
main.testMethod(1);
}
public void testMethod(int i) {
testMethod(i);
System.out.println(i);
}
这里是 System.out.println(i);当调用 testMethod 时,将被反复推送到堆栈。
JVM 的一个(可选)参数是堆栈大小。它是-Xss。我不知道默认值是什么,但是如果堆栈上的东西总数超过该值,你会得到这个错误。
通常,无限递归是导致这种情况的原因,但是如果您看到这种情况,则堆栈跟踪将有超过5帧。
尝试添加一个 -Xss 参数(或增加一个参数的值),看看这是否会消失。