C# 内存快照触发dotMemory中的垃圾收集
我正在使用dotMemory评测在IIS上运行的asp.net mvc应用程序 我怀疑“获取快照”会导致GC gen2运行。为什么? 图片如下:C# 内存快照触发dotMemory中的垃圾收集,c#,asp.net,memory-management,memory-leaks,garbage-collection,C#,Asp.net,Memory Management,Memory Leaks,Garbage Collection,我正在使用dotMemory评测在IIS上运行的asp.net mvc应用程序 我怀疑“获取快照”会导致GC gen2运行。为什么? 图片如下: 问题是:这是正常的行为吗?为什么我不能让快照显示所有这些未被GC收集的东西?每次获取快照时:内存使用率都会下降。是的,这是正常的行为,因为它在获取快照之前会执行完整的垃圾收集。如果在获取快照时看到内存使用率下降,这是一个好迹象 垃圾收集器仅在内存紧张时清理内存。如果要检查内存泄漏,必须执行完整的垃圾收集并获取快照。如果还有什么东西,那就是内存泄漏 通
问题是:这是正常的行为吗?为什么我不能让快照显示所有这些未被GC收集的东西?每次获取快照时:内存使用率都会下降。是的,这是正常的行为,因为它在获取快照之前会执行完整的垃圾收集。如果在获取快照时看到内存使用率下降,这是一个好迹象 垃圾收集器仅在内存紧张时清理内存。如果要检查内存泄漏,必须执行完整的垃圾收集并获取快照。如果还有什么东西,那就是内存泄漏
通常,在执行要测试的功能后,您应该先获得一个干净的基本快照,然后再获得另一个干净的快照,然后比较这两个快照。Microsoft评测API正是以这种方式工作的,dotMemory会在GC期间启动垃圾收集并收集对象图。这是不可配置的吗?我只是想看看大对象堆中的对象排列。但是这些对象在短时间内是活动的,所以在GC之后只有1-2个。现在我明白了,为什么dotMemory要做GC,谢谢你的回答!但在我的例子中,我想看看应用程序在现实生活中是如何生活的,而GC并不经常出现。@1326:我怀疑你不拍快照就看不到内存映射。然而,如果您愿意,如果您能够以GC无法释放的方式持有对这些对象的引用。然后您将能够在LOH中看到它。每个DotMemory快照都有一个“内存流量”链接。它允许您查看内存分配和集合,即使在已收集的对象上也是如此。