在java递归函数中避免内存不足错误并清除堆

时间:2015-11-23 06:14:04

标签: java recursion heap heap-memory

我在java中有一个递归函数。当前我通过生成异常在递归函数的某个点上突破了异常。 问题是我正在堆溢出。无论如何,一旦我使用递归从递归函数中断,就清除堆中未使用的变量。

public void recursivefun(int k)
{
 int m=1;
 System.out.println("m is "+m);
 if (k>100)
 {
  throw new Exception();
 }
 else
 {
  recursivefun(k+1);
  }
  System.out.println("after recursion");
}

我每次从1开始k。而且我不能使用return,因为我现在不想回到递归。我想打破完整的递归。

2 个答案:

答案 0 :(得分:0)

M和K是本地变量,M未使用。那么,你确定存在堆问题吗?你能发布K值吗? 尝试使用return退出。

答案 1 :(得分:0)

如果你使用类似代码的东西,它不应该是堆溢出,如果条件已被设置为一个大整数,它可能是一个堆栈溢出,因为在递归函数堆栈中,而不是堆,问题或代码不够明确,

但我建议在enter link description here

锁定并不错