似乎经常说任务管理器不提供进程正在使用多少内存的准确指示。
如果确实如此,找出这些东西的最简单方法是什么?
我想知道:
- 使用中的总内存(无论是在 RAM 中还是在分页中或其他)
- 正在使用的总 RAM(在机器有大量可用物理 RAM 的情况下运行,因此希望被强制分页的事情不是问题)
- 程序实际使用的总内存(不计算 GC 保留的额外开销)
- 仅由我的程序使用的总内存使用量(不包括共享库/共享内存)
- 共享内存使用总量。
似乎经常说任务管理器不提供进程正在使用多少内存的准确指示。
如果确实如此,找出这些东西的最简单方法是什么?
我想知道:
抓住Process Explorer,右键单击 -> 属性列表中的进程,然后单击“.NET”选项卡。从组合框中选择“.NET CLR 内存”,您将获得有关您的流程的更多实时信息,而不是您知道如何处理;)
http://memprofiler.com/是一个非常好的.Net 内存分析器。但微软在 Windows 性能监视器 (perfmon) 中的构建也会为您提供这些数据。请参阅http://dotnetdebug.net/2005/06/30/perfmon-your-debugging-buddy/。
您可以做一些事情,但我相信,如果您认真分析您的应用程序,最好的办法是使用 Red Gate 的 Ants Profiler:
http://www.red-gate.com/Products/ants_profiler/index.htm
该软件非常全面,可以很好地了解您的应用程序呈现的内存使用情况和其他类型的指标。
启动性能监视器 (perfmon.exe) 并查看 .Net CLR 内存性能对象。每个正在运行的 .net 程序都有自己的实例。你应该能够在那里找到你想要的东西。
如果您双击某个进程, Process Explorer将向您显示其中的一些内容。
SysInternals ProcessExplorer中有一些很好的功能,包括 .NET 分析器,但如果您需要专业工具,ANTS 是您的选择。
我也使用 memprofiler,它极大地帮助了我们。