2
for(int i=0; i<100; i++){
List<Integer> ls =new ArrayList<Integer>();
ls.add(1);
}
在每次迭代之後,分配的內存是否仍然存在。我的意思是我想釋放他們。如果我希望它不在那裏,我該怎麼辦?java中的已分配內存是否保留在下面的代碼中
我遇到了一個內存不足的問題,我不知道它是否被這樣的事情引起與否
for(int i=0; i<100; i++){
List<Integer> ls =new ArrayList<Integer>();
ls.add(1);
}
在每次迭代之後,分配的內存是否仍然存在。我的意思是我想釋放他們。如果我希望它不在那裏,我該怎麼辦?java中的已分配內存是否保留在下面的代碼中
我遇到了一個內存不足的問題,我不知道它是否被這樣的事情引起與否
ls
是for
循環中的局部變量。這意味着一旦迭代完成,可以被垃圾收集,並且確實被標記爲這樣。 JVM是否決定收集它是一個完全不同的問題,並且取決於JVM的實現。它可以通過傳遞給java的參數(例如,-Xms
,-Xmx
或臭名昭着的-XX:
參數)來實現,但不能嚴格控制。
如果您無法訪問'ls',它會如何保留? – SSpoke
@SSpoke這是部分正確的。內存空間是由JVM分配的。我沒有考慮任何可能影響整個事情的潛在優化。但內存不會立即回收。 GC會隨時運行。 – Kon
我面對一個內存問題,它是否因爲大量數據而導致這些問題? – user3495562