【发布时间】:2018-10-15 09:09:57
【问题描述】:
我需要检查堆中分配了多少内存。有没有办法使用 C# 以编程方式获取此值?
我知道System.Runtime.InteropServices.Marshal.SizeOf(...),但这只能告诉我对象的大小。
【问题讨论】:
标签: c# .net memory-management heap-memory
我需要检查堆中分配了多少内存。有没有办法使用 C# 以编程方式获取此值?
我知道System.Runtime.InteropServices.Marshal.SizeOf(...),但这只能告诉我对象的大小。
【问题讨论】:
标签: c# .net memory-management heap-memory
使用PerformanceCounter,您可以从您自己的进程甚至其他进程中查询“# Bytes in all Heaps”。
使用“.Net CLR 内存”类别查看大量可用的计数器。
您必须了解 PerformanceCounter 和 Jon Skeet 提出的 GC.GetTotalMemory 之间的系统负载差异。
【讨论】:
GC.GetTotalMemory 能满足您的所有需求吗?
(请注意,SizeOf 也只告诉您 编组 的大小 - 不一定是内存中的大小。)
【讨论】: