为了账号安全,请及时绑定邮箱和手机立即绑定

是什么导致java.lang.StackOverflowError

是什么导致java.lang.StackOverflowError

翻阅古今 2019-11-30 10:09:25
什么会引起java.lang.StackOverflowError?我得到的堆栈打印输出根本不是很深(只有5种方法)。
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

检查对方法的任何回溯调用。主要是在递归调用方法时引起的。一个简单的例子是


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时将被反复推入堆栈。


查看完整回答
反对 回复 2019-11-30
?
HUX布斯

TA贡献1876条经验 获得超6个赞

JVM的(可选)参数之一是堆栈大小。是-Xss。我不知道默认值是多少,但是如果堆栈中的所有东西的总数量超过该值,就会出现该错误。


通常,无限递归是造成这种情况的原因,但是如果您看到了这一点,则堆栈跟踪将包含5帧以上。


尝试添加-Xss参数(或增加其值)以查看是否消失。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 459 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信