猿问

是什么导致java.lang.StackOverflowError

什么会引起java.lang.StackOverflowError?我得到的堆栈打印输出根本不是很深(只有5种方法)。



翻阅古今
浏览 460回答 3
3回答

慕仙森

检查对方法的任何回溯调用。主要是在递归调用方法时引起的。一个简单的例子是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时将被反复推入堆栈。

HUX布斯

JVM的(可选)参数之一是堆栈大小。是-Xss。我不知道默认值是多少,但是如果堆栈中的所有东西的总数量超过该值,就会出现该错误。通常,无限递归是造成这种情况的原因,但是如果您看到了这一点,则堆栈跟踪将包含5帧以上。尝试添加-Xss参数(或增加其值)以查看是否消失。
随时随地看视频慕课网APP

相关分类

Java
我要回答