簡體   English   中英

在java遞歸函數中避免內存不足錯誤和清除堆

[英]Avoiding out of memory error and clearing heap in java recursive functions

我在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");
}

我每次 k 從 1 開始。我不能使用 return,因為我此時不想回到遞歸。我想跳出完整的遞歸。

M 和 K 是局部變量,M 未使用。 那么,您確定存在堆問題嗎? 您可以發布K值嗎? 嘗試使用 return 退出。

如果您正在使用類似的代碼,它不應該是堆溢出,如果條件已設置為一個大整數,它可能是堆棧溢出,因為在遞歸函數中堆棧被占用而不是堆,問題或代碼不夠清楚,

但我建議在此處輸入鏈接描述時鎖定也不錯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM