Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内存快照触发dotMemory中的垃圾收集_C#_Asp.net_Memory Management_Memory Leaks_Garbage Collection - Fatal编程技术网

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

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收集的东西?每次获取快照时:内存使用率都会下降。是的,这是正常的行为,因为它在获取快照之前会执行完整的垃圾收集。如果在获取快照时看到内存使用率下降,这是一个好迹象 垃圾收集器仅在内存紧张时清理内存。如果要检查内存泄漏,必须执行完整的垃圾收集并获取快照。如果还有什么东西,那就是内存泄漏 通

我正在使用dotMemory评测在IIS上运行的asp.net mvc应用程序

我怀疑“获取快照”会导致GC gen2运行。为什么? 图片如下:


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

是的,这是正常的行为,因为它在获取快照之前会执行完整的垃圾收集。如果在获取快照时看到内存使用率下降,这是一个好迹象

垃圾收集器仅在内存紧张时清理内存。如果要检查内存泄漏,必须执行完整的垃圾收集并获取快照。如果还有什么东西,那就是内存泄漏


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

Microsoft评测API正是以这种方式工作的,dotMemory会在GC期间启动垃圾收集并收集对象图。

这是不可配置的吗?我只是想看看大对象堆中的对象排列。但是这些对象在短时间内是活动的,所以在GC之后只有1-2个。现在我明白了,为什么dotMemory要做GC,谢谢你的回答!但在我的例子中,我想看看应用程序在现实生活中是如何生活的,而GC并不经常出现。@1326:我怀疑你不拍快照就看不到内存映射。然而,如果您愿意,如果您能够以GC无法释放的方式持有对这些对象的引用。然后您将能够在LOH中看到它。每个DotMemory快照都有一个“内存流量”链接。它允许您查看内存分配和集合,即使在已收集的对象上也是如此。