我创建了一个使用了150MB内存(私有字节)的C#应用程序,主要是因为有一个很大的字典:
Dictionary<string, int> Txns = new Dictionary<string, int>();
我想知道如何释放这段内存。我已经尝试过这个:
Txns = null;
GC.Collect();
但是它似乎并没有在我的私有字节中产生太大的影响——它们从155mb降到145mb。
有什么线索吗?
谢谢。
-编辑-
好的,我用这段代码运行得更顺利了(它将私有字节降至50mb),但为什么呢?
Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
对于所有说“不要使用GC.collect”的人,我理解(我并不想争论这个问题,除了说你可以看到我的C背景),但这并没有真正回答我的问题: 为什么垃圾收集器只有在我清空事务列表后才会释放内存?既然字典已经被取消引用,它不应该自动释放内存吗?