如何查看给定 .NET 应用程序中的内存分配?
Posted
技术标签:
【中文标题】如何查看给定 .NET 应用程序中的内存分配?【英文标题】:How do I see memory allocation in a given .NET application? 【发布时间】:2018-10-15 09:09:57 【问题描述】:我需要检查堆中分配了多少内存。有没有办法使用 C# 以编程方式获取此值?
我知道System.Runtime.InteropServices.Marshal.SizeOf(...)
,但这只能告诉我对象的大小。
【问题讨论】:
【参考方案1】:使用PerformanceCounter,您可以从您自己的进程甚至其他进程中查询“# Bytes in all Heaps”。
使用“.Net CLR 内存”类别查看大量可用的计数器。
您必须了解 PerformanceCounter 和 Jon Skeet 提出的 GC.GetTotalMemory 之间的系统负载差异。
【讨论】:
【参考方案2】:GC.GetTotalMemory
能满足您的所有需求吗?
(请注意,SizeOf
也只告诉您 编组 的大小 - 不一定是内存中的大小。)
【讨论】:
甜蜜。您是否也知道如何获取已实例化的某个特定类的实例数量? @Spoike:不,我不相信没有在分析 API 下运行的信息是可用的。以上是关于如何查看给定 .NET 应用程序中的内存分配?的主要内容,如果未能解决你的问题,请参考以下文章
C中结构中的指针-如何将给定的void指针的值分配给结构中的指针[关闭]