for(int i = 0; i < len i++) {
List<Integer> a = new ArrayList<Integer>();
a.add(1)
a.add(2)
}
有人告訴我,在這個循環完成後,與a
相關的內存將被釋放。在循環過程中,內存分配給一個列表還是len * listmemory?在循環之後釋放的Java for循環中分配的內存?
我的意思是在內存期間使用了多少個字節,如8 * len或只是說8?
在我的項目中,列表非常龐大,所以我想知道,如果我把聲明放在for循環之外,內存使用的使用比這個小得多嗎?
你應該單獨詢問你的'FileChannel'問題。這完全不相關。 –
內存可能在循環之後或下一次循環迭代期間釋放,甚至從不釋放(如果Java從不需要回內存)。垃圾收集是不可預測的。但是:*如果需要的話,它會一直被釋放,而其他任何東西都不會使用它 - 無論運行多少次,您的循環都不會導致OutOfMemoryError。 *如果您稍後有可能使用它,它永遠不會被釋放 - 您永遠無法訪問已釋放的內存。 – immibis
謝謝,fileChannel怎麼樣,如果我在循環中啓動一個新的文件通道,並且不關閉它,會導致內存不足嗎? – user3495562