java递归函数中避免内存不足错误和清除堆
我在java中有一个递归函数。目前,我在递归函数的某个点上通过生成一个异常来打破异常。 问题是我的堆溢出了。一旦我使用递归从递归函数中中断,是否仍有清除堆中未使用的变量的方法java递归函数中避免内存不足错误和清除堆,java,recursion,heap,heap-memory,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); } Syst
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开始。我不能使用return,因为我现在不想回到递归。我想打破完整的递归。M和K是局部变量,M是未使用的。那么,您确定存在堆问题吗?你能公布K值吗?
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");
}
尝试使用return退出 如果您使用的是类似于该代码的代码,则不应该是堆溢出,如果条件设置为大整数,则可能是堆栈溢出,因为在递归函数stack中,而不是堆,问题或代码不够清楚
但我建议在上锁定也不错,为什么要抛出一个异常而不是仅仅调用return来退出递归呢?你到底想做什么?或者你正在抛出一个异常,作为一个断言?我只是通过抛出异常来打破整个递归。为什么不直接返回呢?你能发布完整的程序吗。你传递的k值是多少?