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

4

我需要检查堆中分配了多少内存。有没有一种用C#编程方式来获取这个值的方法?

我知道可以使用System.Runtime.InteropServices.Marshal.SizeOf(...)来获取对象的大小,但那只会告诉我对象的大小。

2个回答

5

通过使用PerformanceCounter,您可以查询自己的进程以及其他进程中“所有堆中的字节数”,使用类“.Net CLR Memory”可以看到很多可用的计数器。

您需要比较PerformanceCounter和Jon Skeet提出的GC.GetTotalMemory之间在系统负载方面的差异。


4

GC.GetTotalMemory 能满足您的所有需求吗?(注意,SizeOf 只能告诉您序列化后的大小,并不一定是内存中的大小。)


好的。你是否也知道如何获取已实例化的某个特定类的实例数量呢? - Spoike
@Spoike:不,我不相信在不运行性能分析 API 的情况下可以获得那些信息。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接