什么是在Windows中长时间跟踪进程内存使用情况的最佳工具?

什么是最好的工具来监视我的C#/ .Net Windows服务在很长一段时间内的内存使用情况。 据我所知,像perfmon这样的工具可以在很短的时间内监控内存使用情况,但不会在很长一段时间内以图形方式监控。 我需要几天而不是几秒钟的趋势数据。

为了清楚起见,我希望在很长一段时间内以精细的细节级别监视内存使用情况,并让图表显示整个时间范围和详细程度。 我需要一个小的采样间隔和一个大图。

在我看来,Perfmon是最好的工具之一,但请确保根据您希望监控的时间正确配置采样间隔。

例如,如果要监视进程:

  • 1小时:我会使用1秒间隔(这将生成60 * 60个样本)
  • 为期1天:我将使用30秒间隔(这将生成2 * 60 * 24个样本)
  • 为期1周:我会使用1分钟间隔(这将产生60 * 24 * 7个样本)

使用这些采样间隔,Perfmon应该可以生成计数器的漂亮图形输出。

好吧,我使用了perfmon,将结果导出到csv,然后使用excel进行统计。 上次我需要监控一个过程时,这非常有效

玩弄计算机管理(假设你在这里运行Windows),似乎你可以让它随着时间的推移监控一个过程。 转到计算机管理 – >性能日志和警报,然后查看计数器/跟踪日志。 右键单击计数器日志并添加新日志。 现在单击添加对象并选择内存。 现在单击添加计数器并将“性能对象”更改为“处理”,然后选择您的流程。

就像监视内存本身一样,你可能正在考虑使用内存分析来识别泄漏或过时的对象 – http://memprofiler.com/在这里是一个不错的选择,但还有很多其他的。

如果你想做一些非常具体的事情,不要害怕在计时器上编写你自己的基于WMI的记录器 – 你可以通过电子邮件向你发送流程统计信息,当它增长太快或太高时发出警告,发送它作为用于制图等的XML

如果您熟悉Python,那么为此编写脚本非常容易。

Activestate Python (免费)通过win32process模块公开Win32 API的相关部分。

您还可以查看所有与win32相关的模块,或使用gotAPI浏览Python标准库。

我建议使用软件validation中的.Net Memory Validator工具。 这个工具帮助我解决了与我必须使用的.Net应用程序中的内存管理相关的许多不同问题。

我更频繁地使用C ++版本,但它们非常相似,而且您可以实时看到所分配对象的类型这一事实对您来说非常宝贵。

如果你需要比perfmon更强大的function,我已经使用过ProcessMonitor。