我正在运行一个用Java在Eclipse中编写的程序。对于很大的输入,该程序具有很深的递归级别。对于较小的输入,程序运行正常,但是在给出较大的输入时,出现以下错误:
Exception in thread "main" java.lang.StackOverflowError
可以通过增加Java堆栈大小来解决此问题,如果可以,那么如何在Eclipse中做到这一点?
更新:
@乔恩·斯基特
该代码递归地遍历解析树以建立数据结构。因此,例如,代码将使用解析树中的一个节点来做一些工作,并在该节点的两个子节点上调用自身,将其结果组合起来以给出树的整体结果。
递归的总深度取决于解析树的大小,但是当递归调用的数量达到1000时,代码似乎会失败(没有更大的堆栈)。
我也很确定代码不会因为错误而失败,因为它适用于少量输入。
打开应用程序的运行配置(运行/运行配置…,然后在“ Java应用程序”中查找应用程序条目)。
该参数选项卡中有一个文本框VM参数,输入-Xss1m(或最大堆栈大小更大参数)。默认值为512 kByte(SUN JDK 1.5-不知道供应商和版本之间是否有所不同)。
-Xss1m