我是C#的新手,想知道list1是否真的在list1 = null之後從內存中移除;C#List and Memory
List<string> list1 = new List<string>()
{
"carrot",
"fox",
"explorer"
};
List<string> list2 = new List<string>();
list2.Add(list1[0]);
list2.Add(list1[1]);
list2.Add(list1[2]);
list1 = null;
此代碼僅適用於文檔,在我的真實案例列表1對象是非常大的,我需要從內存中刪除它,只有用列表2,它是原始列表1的一小部分continu。
我假設list1 [0]和list2 [0]引用內存中的同一個對象,直到我用新值更新list2 [0] ...是否正確?
但是你可以調用GC.Collect http://msdn.microsoft.com/en-us/library/xe0c2357.aspx。它可能會回收內存。 – 2012-07-12 09:09:16
@AmiramKorach - 可能。它可能不會。直接調用它是不好的做法。無論如何,這不是問題所在。 – Oded 2012-07-12 09:09:57
@AmiramKorach:是的,但是告訴那些現在只學習C#的人「你可以收集這樣的內存」並不是一個好主意。他們缺乏經驗會導致嚴重的虐待。好的建議不僅是關於所說的內容,還包括沒有說明的內容。 – Jon 2012-07-12 09:10:17