【问题标题】:Is it possible to track memory usage in a C# application without using a profiler?是否可以在不使用分析器的情况下跟踪 C# 应用程序中的内存使用情况?
【发布时间】:2010-10-10 09:04:13
【问题描述】:

我想编写一个简单的应用程序来跟踪它当前的内存使用情况、创建对象的数量等。在 C++ 中我通常会覆盖 new 运算符,但由于显而易见的原因我不能在 C# 中这样做.有什么方法可以在不使用分析器的情况下做到这一点?

【问题讨论】:

    标签: c# .net memory memory-management


    【解决方案1】:

    您可能希望从垃圾收集器开始。 MSDN 列出了一些成员here,可以告诉你如何做一些事情,比如获取它认为分配的内存总量,GC 收集了多少次。任何比这更高级的东西,比如获取已加载程序集的对象计数,您可能必须使用分析器或自己编写一些东西。

    【讨论】:

      【解决方案2】:

      .NET 内存性能计数器将为您提供聚合信息,但不包括对象计数器。为此,您需要一个分析器。

      【讨论】:

        【解决方案3】:

        使用 WMI 试试:

        获取进程使用情况(W2K3/2K8):

        "SELECT IDProcess, PercentPrivilegedTime, PercentProcessorTime, PercentUserTime FROM Win32_PerfFormattedData_PerfProc_Process where Name='process_name.exe'"
        

        要识别您的网站,请使用:

        "SELECT ProcessId, CommandLine, WorkingSetSize, ThreadCount, PrivatePageCount, PageFileUsage, PageFaults, HandleCount, CreationDate, Caption FROM Win32_Process where Caption='process_name.exe'"
        

        将此工具用于WQL teste

        或者使用 PerfMon 工具。

        有关计数器的更多信息,请参阅文档末尾的Windows System Resource Manager Accounting

        祝你好运。

        【讨论】:

          猜你喜欢
          • 2012-02-17
          • 2013-05-30
          • 1970-01-01
          • 2013-01-14
          • 2011-02-19
          • 1970-01-01
          • 2011-01-18
          • 1970-01-01
          • 2020-06-27
          相关资源
          最近更新 更多