相关疑难解决方法(0)

在c#中显式释放内存

我创建了一个使用150mb内存(私有字节)的ac#应用程序,主要是因为一个很大的字典:

Dictionary<string, int> Txns = new Dictionary<string, int>();
Run Code Online (Sandbox Code Playgroud)

我想知道如何释放这个记忆.我试过这个:

Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)

但它似乎并没有对我的私人字节造成太大影响 - 他们从155mb减少到145mb.有线索吗?

谢谢

-编辑-

好吧,我对这段代码运气不错(它将私有字节减少到50mb),但为什么呢?

Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)

-编辑-

对于那些说'不要使用GC.collect'的人来说,这是公平的(我不打算辩论,除了说你可以看到我的C背景通过),但它并没有真正回答我的问题:如果我先清除事务列表,为什么垃圾收集器只释放内存?它不应该释放内存,因为字典已被解除引用?

.net c# memory profiling memory-leaks

37
推荐指数
3
解决办法
7万
查看次数

标签 统计

.net ×1

c# ×1

memory ×1

memory-leaks ×1

profiling ×1