有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中我的递归调用的jvm StackOverflower错误

我正在进行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在这些事情上的行为

蒂亚


共 (1) 个答案

  1. # 1 楼答案

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

    java -Xss8m Test
    

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