如何确定.NET程序正在使用的内存量?

如何确定.NET程序正在使用的内存量?,.net,profiling,memory-management,.net,Profiling,Memory Management,似乎经常有人说,任务管理器不能准确指示进程使用了多少内存 如果确实是这样,那么找出这些问题的最简单方法是什么 我想知道: 使用的总内存(无论是RAM、分页还是其他形式) 使用中的总RAM(在机器有大量空闲物理RAM的情况下运行,因此强制分页不是问题) 程序实际使用的总内存(不包括GC保留的额外开销) 我的程序单独使用的总内存使用量(不包括共享库/共享内存) 总共享内存使用率 您可以做一些事情,但我相信,如果您真的想评测应用程序,最好的办法是使用RedGate提供的Ants Profiler:

似乎经常有人说,任务管理器不能准确指示进程使用了多少内存

如果确实是这样,那么找出这些问题的最简单方法是什么

我想知道:

  • 使用的总内存(无论是RAM、分页还是其他形式)
  • 使用中的总RAM(在机器有大量空闲物理RAM的情况下运行,因此强制分页不是问题)
  • 程序实际使用的总内存(不包括GC保留的额外开销)
  • 我的程序单独使用的总内存使用量(不包括共享库/共享内存)
  • 总共享内存使用率

您可以做一些事情,但我相信,如果您真的想评测应用程序,最好的办法是使用RedGate提供的Ants Profiler:


该软件非常全面,可以很好地了解应用程序的内存使用情况和其他指标。

是一个非常好的.Net内存分析器。但是微软的内置Windows性能监视器(perfmon)也会给出这些数据。请参见。

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

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

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

ProcessExplorer中有一些很好的功能,包括.NET探查器,虽然如果你需要专业工具,ANTS是一个不错的选择。

我也使用memprofiler,它为我们提供了巨大的帮助。

这些信息来自性能计数器。您还可以使用perfmon.True查看性能计数器,但我发现Process Explorer是一个更方便的工具,即使它是一个附加安装:}