我需要检查堆中分配了多少内存。有没有办法用C#编程获得这个值?

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

有帮助吗?

解决方案

使用 PerformanceCounter ,您可以查询“ ; #Bages in the Heaps“,来自您自己的进程,甚至是其他进程。

使用类别“.Net CLR Memory”看到很多柜台可供使用。

你必须看看在Jon Skeet提出的PerformanceCounter和GC.GetTotalMemory之间系统负载的区别。

其他提示

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

(请注意, SizeOf 也只会告诉您 marshalled 大小 - 不一定是内存中的大小。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top