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

Java堆栈溢出错误 - 如何在Eclipse中增加堆栈大小?

Java堆栈溢出错误 - 如何在Eclipse中增加堆栈大小?

哆啦的时光机 2019-08-02 16:23:59
Java堆栈溢出错误 - 如何在Eclipse中增加堆栈大小?我正在运行一个我在Eclipse中用Java编写的程序。对于非常大的输入,该程序具有非常深的递归级别。对于较小的输入,程序运行正常但是当给出大输入时,我得到以下错误:Exception in thread "main" java.lang.StackOverflowError可以通过增加Java堆栈大小来解决这个问题,如果是这样,我该如何在Eclipse中执行此操作?更新:@Jon Skeet代码以递归方式遍历解析树以构建数据结构。因此,例如,代码将使用解析树中的节点执行一些工作,并在节点的两个子节点上调用自身,将它们的结果组合在一起以给出树的整体结果。递归的总深度取决于解析树的大小,但当递归调用的数量达到1000时,代码似乎失败(没有更大的堆栈)。此外,我很确定代码没有失败,因为它适用于小输入的bug。
查看完整描述

3 回答

?
阿晨1998

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

打开应用程序的运行配置(运行/运行配置...,然后在'Java应用程序'中查找应用程序条目)。

参数选项卡中有一个文本框VM参数,输入-Xss1m(或最大堆栈大小更大参数)。默认值为512 kByte(SUN JDK 1.5 - 不知道供应商和版本之间是否有所不同)。


查看完整回答
反对 回复 2019-08-02
?
互换的青春

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

可以通过增加堆栈大小来解决- 但更好的解决方案是找出如何避免递归这么多。递归解决方案总是可以转换为迭代解决方案 - 这将使您的代码更加干净地扩展到更大的输入。否则你真的会猜测要提供多少堆栈,这在输入中可能甚至不明显。

顺便说一下,你是否完全确定输入的大小而不是代码中的错误?这次递归有多深?

编辑:好的,看到更新后,我会亲自尝试重写它以避免使用递归。通常有一些Stack<T>“仍然可以做的事情”是删除递归的一个很好的起点。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 829 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号