什么會引起java.lang.StackOverflowError?我得到的堆棧打印輸出根本不是很深(只有5種方法)。
3 回答

慕仙森
TA貢獻1827條經(jīng)驗 獲得超8個贊
檢查對方法的任何回溯調(diào)用。主要是在遞歸調(diào)用方法時引起的。一個簡單的例子是
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); 調(diào)用testMethod時將被反復推入堆棧。

HUX布斯
TA貢獻1876條經(jīng)驗 獲得超6個贊
JVM的(可選)參數(shù)之一是堆棧大小。是-Xss。我不知道默認值是多少,但是如果堆棧中的所有東西的總數(shù)量超過該值,就會出現(xiàn)該錯誤。
通常,無限遞歸是造成這種情況的原因,但是如果您看到了這一點,則堆棧跟蹤將包含5幀以上。
嘗試添加-Xss參數(shù)(或增加其值)以查看是否消失。
添加回答
舉報
0/150
提交
取消