我的情况如下
class a{
public void process(){
System.out.println("ABC");
process();
}
}
当我在某一点执行时,我正在获得堆栈溢出异常。在我的情况下,我不能改变递归调用逻辑。因此,对于解决方法,我尝试捕获错误并再次进行gc调用以启动process()
方法。它是否是一个很好的解决方案...或者什么是保持递归调用无限生存的更好解决方案。
答案 0 :(得分:1)
每次递归发生时,递归调用都会在JVM中占用堆栈帧,从而导致堆栈溢出错误不可避免。
Java中最好的解决方案是使用迭代。例如:
public void process() {
while (true) {
processOnce();
}
}