在无休止的递归调用中处理堆栈溢出异常

时间:2016-05-29 12:19:28

标签: java multithreading recursion

我的情况如下

class a{
    public void process(){
      System.out.println("ABC");
      process();
    }
}

当我在某一点执行时,我正在获得堆栈溢出异常。在我的情况下,我不能改变递归调用逻辑。因此,对于解决方法,我尝试捕获错误并再次进行gc调用以启动process()方法。它是否是一个很好的解决方案...或者什么是保持递归调用无限生存的更好解决方案。

1 个答案:

答案 0 :(得分:1)

每次递归发生时,递归调用都会在JVM中占用堆栈帧,从而导致堆栈溢出错误不可避免。

Java中最好的解决方案是使用迭代。例如:

public void process() {
    while (true) {
        processOnce();
    }
}