我正在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。
答案 0 :(得分:3)
假设您没有处理无限递归,可以使用命令行Xss
参数增加堆栈大小:
java -Xss8m Test
这是为每个线程的内部使用分配的内存量。大小可以以字节(-Xss8
),千字节(-Xss8k
),兆字节(-Xss8m
)或千兆字节(-Xss8g
)指定。请注意,将此值设置为较高值会显着增加内存使用量。