如何在给定的.NET应用程序中查看内存分配?

我需要检查堆中分配了多少内存。 有没有办法用C#以编程方式获取此值?

我知道System.Runtime.InteropServices.Marshal.SizeOf(...)但它只告诉我一个对象的大小。

使用PerformanceCounter,您可以从您自己的进程甚至其他进程中查询“所有堆中的字节数”。

使用类别“.Net CLR Memory”可以查看许多可用的计数器。

您必须了解PerformanceSounter与Jon Skeet提出的GC.GetTotalMemory之间的系统负载有何不同。

GC.GetTotalMemory能做你需要的一切吗?

(请注意, SizeOf只会告诉您编组的大小 – 不一定是内存中的大小。)