.NET - 不同的DebugDiag和perfmon GC堆大小结果

时间:2013-09-02 09:50:40

标签: heap-memory perfmon debugdiag

我使用DebugDiag 1.2和perfmon.exe来监视.NET应用程序的内存使用情况。

DebugDiag将GC Heap Size显示为35.51 MB,而对于同一时刻,perfmon将#Bytes in all heaps显示为4.5 MB。

为什么两个值都不同?他们不代表同样的事情吗?

1 个答案:

答案 0 :(得分:2)

“所有堆中的字节数”表示应用程序当前正在使用的所有.NET对象使用的内存,其中GC堆大小实际上是.NET堆中提交的内存。 GC堆大小更大的原因是因为它包含标记为“ FREE ”的对象使用的内存。 .NET不会立即将所有标记为FREE的内存返回给操作系统并在下一个垃圾收集中释放,以便内存仍然标记为提交,并且仍然在.net堆中,但实际上并没有被任何东西使用在申请中。

要更加了解这一点,请浏览http://blogs.msdn.com/b/tess/archive/2005/11/25/496973.aspx并在该博客中搜索免费一词