如何在给定的.NET应用程序中查看内存分配?
我需要检查堆中分配了多少内存。 有没有办法用C#以编程方式获取此值?
我知道System.Runtime.InteropServices.Marshal.SizeOf(...)
但它只告诉我一个对象的大小。
使用PerformanceCounter,您可以从您自己的进程甚至其他进程中查询“所有堆中的字节数”。
使用类别“.Net CLR Memory”可以查看许多可用的计数器。
您必须了解PerformanceSounter与Jon Skeet提出的GC.GetTotalMemory之间的系统负载有何不同。
GC.GetTotalMemory
能做你需要的一切吗?
(请注意, SizeOf
只会告诉您编组的大小 – 不一定是内存中的大小。)