【发布时间】:2013-09-02 09:50:39
【问题描述】:
我正在使用 DebugDiag 1.2 和 perfmon.exe 来监控 .NET 应用程序的内存使用情况。
DebugDiag 将 GC Heap Size 显示为 35.51 MB,而对于同一时刻 perfmon 将 #Bytes in all heaps 显示为 4.5 MB。
为什么两个值不同?它们代表的不是同一个东西吗?
【问题讨论】:
标签: 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。
为什么两个值不同?它们代表的不是同一个东西吗?
【问题讨论】:
标签: heap-memory perfmon debugdiag
“所有堆中的字节数”表示应用程序当前正在使用的所有 .NET 对象使用的内存,其中 GC 堆大小实际上是 .NET 堆中提交的内存。 GC 堆大小会更大的原因是它包含了标记为“FREE”的对象使用的内存。 .NET 不会立即将所有标记为 FREE 的内存返回给操作系统,并在下一次垃圾回收时释放,因此内存仍被标记为提交并且仍在 .net 堆中,但没有真正被任何东西使用在应用程序中。
如需更多了解,请转至http://blogs.msdn.com/b/tess/archive/2005/11/25/496973.aspx 并在该博客中搜索“Free”一词
【讨论】: