【问题标题】:How can I determine how much memory my .NET program is using?如何确定我的 .NET 程序正在使用多少内存?
【发布时间】:2010-09-26 08:09:10
【问题描述】:

似乎经常说任务管理器不能准确指示进程正在使用多少内存。

如果确实如此,找出这些东西最简单的方法是什么?

我想知道:

  • 正在使用的总内存(无论是在 RAM 中还是在分页中或其他)
  • 正在使用的总 RAM(在机器有大量可用物理 RAM 负载的情况下运行,因此希望被强制换页不是问题)
  • 程序实际使用的总内存(不包括 GC 保留的额外开销)
  • 仅由我的程序使用的总内存使用量(不包括共享库/共享内存)
  • 共享内存使用总量。

【问题讨论】:

    标签: .net profiling memory-management


    【解决方案1】:

    您可以做一些事情,但我相信,如果您认真分析您的应用程序,最好的办法就是使用 Red Gate 的 Ants Profiler:

    http://www.red-gate.com/Products/ants_profiler/index.htm

    这个软件非常全面,可以很好地展示您的应用程序呈现的内存使用情况和其他类型的指标。

    【讨论】:

      【解决方案2】:

      http://memprofiler.com/ 是一个非常好的 .Net 内存分析器。但微软在 Windows 性能监视器 (perfmon) 中的构建也会为您提供这些数据。请参阅http://dotnetdebug.net/2005/06/30/perfmon-your-debugging-buddy/

      【讨论】:

        【解决方案3】:

        抓取Process Explorer,右键单击-> 属性列表中的进程,然后单击“.NET”选项卡。从组合框中选择“.NET CLR 内存”,您将获得更多关于您的进程的实时信息,而不是您知道如何处理;)

        【讨论】:

        • 该信息来自性能计数器。您还可以使用 perfmon 查看性能计数器。
        • 是的 - 但我发现 Process Explorer 是一个更方便的工具,即使它额外安装:}
        【解决方案4】:

        启动性能监视器 (perfmon.exe) 并查看 .Net CLR 内存性能对象。每个正在运行的 .net 程序都有自己的实例。你应该可以在那里找到你想要的。

        【讨论】:

          【解决方案5】:

          如果您双击某个进程,Process Explorer 将向您显示其中的一些内容。

          【讨论】:

            【解决方案6】:

            SysInternals ProcessExplorer 中有一些不错的功能,包括 .NET 分析器,但如果您需要专业工具,ANTS 是您的最佳选择。

            【讨论】:

              【解决方案7】:

              我也使用 memprofiler,它对我们帮助很大。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-11-29
                • 2011-01-12
                • 1970-01-01
                • 2010-09-06
                • 1970-01-01
                • 1970-01-01
                • 2015-04-29
                • 2011-09-06
                相关资源
                最近更新 更多