我是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