我是 C# 新手,想知道在 list1 = null; 之后 list1 是否真的从内存中删除。
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;
Run Code Online (Sandbox Code Playgroud)
此代码仅用于文档,在我的实际情况中,list1 对象非常大,我需要将其从内存中删除,并仅继续使用 list2,它是原始 list1 的一小部分。
我假设 list1[0] 和 list2[0] 引用内存中的同一对象,直到我用新值更新 list2[0] ...这是正确的吗?
有几个问题。让我尝试分别回答它们:
当对list1的引用设置为null时,list1是否会从内存中删除?
不,当垃圾收集器下次清理堆时,该列表将从内存中删除。何时进行清理取决于垃圾收集器。
list1 和 list2 是否引用相同的对象?
是的,他们是。
所以总而言之,这意味着您不必处理内存管理。这是由垃圾收集器完成的。而且垃圾收集器足够聪明,知道何时必须收集孤立对象。所以不要试图比 GC 做得更好。几乎在所有情况下,情况都在变得更糟。
| 归档时间: |
|
| 查看次数: |
11213 次 |
| 最近记录: |