Clear()
後 item 就等 GC 處理了,List 本身不會釋放;有沒有加 TrimExcess()
對釋放記憶體沒幫助。
如果要釋放 List,建議用 Dispose()
然後指派成 null。
Sample
var list = new List<XXX>();
// ...
list.Dispose();
list = null;
呼叫 Clear() 後,List 裡的 Item 會被清空(非回收);如果 List 裡放的是參考型別,就僅僅是將 List 裡儲存的參考設定為 null,此時 List 所佔用的記憶體空間仍在。而若被清空的 Item 在程式的其他地方沒有被參考,就會在下一次 GC 被回收。
將 List 設定為 null 並不代表 List 的 Item 指向的物件在 heap 中佔用的記憶體會被 GC 回收,還是要看原先儲存在 List 中的 Item 指向的物件是否有被其他人參考到(這裡假設 Item 為參考型別)。也就是說,將 List 設定為 null 只確保了儲存在 List 中的 Item 參考位置(指標)會在下一次 GC 回收。
我的問題重點就是,
所謂的"下一次GC"是什麼時後,
多久之後他會回收,
然後下一個問題,
如果我設了null,
然後又new一個新的出來,
那之前那部分會回收嗎?
我要如何測試知道有沒有被回收??
kalaja
感恩,
我來研究看看~