【问题标题】:How do I see memory allocation in a given .NET application?如何查看给定 .NET 应用程序中的内存分配?
【发布时间】:2018-10-15 09:09:57
【问题描述】:

我需要检查堆中分配了多少内存。有没有办法使用 C# 以编程方式获取此值?

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

【问题讨论】:

    标签: c# .net memory-management heap-memory


    【解决方案1】:

    使用PerformanceCounter,您可以从您自己的进程甚至其他进程中查询“# Bytes in all Heaps”。

    使用“.Net CLR 内存”类别查看大量可用的计数器。

    您必须了解 PerformanceCounter 和 Jon Skeet 提出的 GC.GetTotalMemory 之间的系统负载差异。

    【讨论】:

      【解决方案2】:

      GC.GetTotalMemory 能满足您的所有需求吗?

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

      【讨论】:

      • 甜蜜。您是否也知道如何获取已实例化的某个特定类的实例数量?
      • @Spoike:不,我不相信没有在分析 API 下运行的信息是可用的。
      猜你喜欢
      • 2012-06-05
      • 2012-07-18
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 2010-10-01
      • 1970-01-01
      相关资源
      最近更新 更多