内存快照触发dotMemory中的垃圾收集

时间:2015-07-31 13:32:09

标签: c# asp.net memory-management memory-leaks garbage-collection

我正在使用dotMemory来配置在IIS上运行的asp.net mvc应用程序。

我怀疑'获取快照'会导致GC gen2运行。为什么? 这是图片:

Snapshot causes gc 问题是:这是正常的行为吗?为什么我不能得到快照显示我所有未被GC收集的东西?每次我获得快照时:内存使用量都会下降。

2 个答案:

答案 0 :(得分:6)

是的,这是正常行为,因为它在获取快照之前执行完整的垃圾回收。如果你看到快照时内存使用量下降,那就是一个好兆头。

只有存在内存压力时,垃圾收集器才会清除内存。如果要检查内存泄漏,则必须执行完整的垃圾回收并获取快照。如果还有什么东西是内存泄漏的话。

通常,在执行要测试的功能后,应该获得一个干净的基本快照,然后再获得另一个干净的快照,然后比较两个快照。

答案 1 :(得分:2)

Microsoft分析API正在以这种方式工作,dotMemory启动垃圾收集并在GC期间收集对象图。