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

标签 java eclipse jvm stack-overflow jvm-arguments

我正在运行一个我在 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/

相关文章:

java - Eclipse 无法使用 Scala IDE 识别 TODO/FIXME 注释

java - 如何在 Birt 报告中对标签进行垂直对齐(文本旋转)

Java/OOM : How to dump all information on java heap space when it crashes due to OOM?

java - JVM等待线程多长时间

java - 调试 Tomcat 应用程序启动

java - 在android studio中分配给新的局部变量快捷方式(ctrl-2 L)

java - Scala - 如何使用 Futures 在发生异常时发送失败响应

java - kafka java进程消耗太多内存

java - 使用 StringUtils 时出现运行时错误

java - 对密码进行编码