我需要检查堆中分配了多少内存。有没有办法用 C# 以编程方式获取这个值?
我知道,System.Runtime.InteropServices.Marshal.SizeOf(...)
但这只能告诉我一个对象的大小。
我需要检查堆中分配了多少内存。有没有办法用 C# 以编程方式获取这个值?
我知道,System.Runtime.InteropServices.Marshal.SizeOf(...)
但这只能告诉我一个对象的大小。
使用PerformanceCounter,您可以从您自己的进程甚至其他进程中查询“# Bytes in all Heaps”。
使用“.Net CLR 内存”类别查看大量可用的计数器。
您必须查看由 Jon Skeet 提出的 PerformanceCounter 和 GC.GetTotalMemory 之间的系统负载差异。
做GC.GetTotalMemory
你需要的一切吗?
(请注意,这也SizeOf
只会告诉您编组后的大小 - 不一定是内存中的大小。)