StackOverflowError到我在Java中的递归调用

时间:2014-09-16 04:11:26

标签: java jvm stack-overflow

我正在StackOverflowError收到我的递归电话:

    Exception in thread "main" java.lang.StackOverflowError
        at Test.trailMngr(Test.java:112)
        at Test.trailMngr(Test.java:115)
        at Test.trailMngr(Test.java:115)
        at Test.trailMngr(Test.java:115)
        at Test.trailMngr(Test.java:115)
        ...
    Java Result: 1

有没有办法在不更改代码的情况下修复此问题?

我能想到的唯一方法是使它成为一种非递归方法。

代码中的其他所有内容在较小的输入大小中都能正常工作 - 如果可能的话我会避免更改(尽管我没有希望)。

不熟悉Java在这些方面的表现。

TIA。

1 个答案:

答案 0 :(得分:3)

假设您没有处理无限递归,可以使用命令行Xss参数增加堆栈大小:

java -Xss8m Test

这是为每个线程的内部使用分配的内存量。大小可以以字节(-Xss8),千字节(-Xss8k),兆字节(-Xss8m)或千兆字节(-Xss8g)指定。请注意,将此值设置为较高值会显着增加内存使用量。