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