What's the best tool to track a process's memory usage over a long period of time in Windows?什么是最好的工具来监视我的C#/ .Net Windows服务在很长一段时间内的内存使用情况。 据我所知,像perfmon这样的工具可以在很短的时间内监控内存使用情况,但不会在很长一段时间内以图形方式监控。 我需要几天而不是几秒钟的趋势数据。 为了清楚起见,我希望在很长一段时间内以精细的细节级别监视内存使用情况,并让图表显示整个时间范围和详细程度。 我需要一个小的采样间隔和一个大图。 在我看来,Perfmon是执行此操作的最佳工具之一,但请确保根据您希望监控的时间正确配置采样间隔。 例如,如果要监视进程:
使用这些采样间隔,Perfmon应该可以生成计数器的漂亮图形输出。 好吧,我使用了perfmon,将结果导出到csv,然后使用excel进行统计。上次我需要监控一个过程时,这非常有效 与监视内存本身一样好,您可能正在考虑使用内存分析来识别泄漏或过时的对象 - http://memprofiler.com/在这里是一个不错的选择,但还有很多其他的。 如果你想做一些非常具体的事情,不要害怕在计时器上编写你自己的基于WMI的记录器 - 你可以通过电子邮件向你发送流程统计信息,当它增长太快或太高时发出警告,发送它作为用于图表的XML等 玩弄计算机管理(假设你在这里运行Windows),看起来你可以让它随着时间的推移监控一个过程。转到计算机管理 - >性能日志和警报,然后查看计数器/跟踪日志。右键单击计数器日志并添加新日志。现在单击添加对象并选择内存。现在单击添加计数器并将"性能对象"更改为"处理",然后选择您的流程。
我建议使用软件验证中的.Net Memory Validator工具。 我更频繁地使用C ++版本,但它们非常相似,而且您可以实时看到所分配对象的类型这一事实对您来说非常宝贵。 如果您熟悉Python,那么为此编写脚本非常容易。 Activestate Python(免费)通过win32process模块??公开Win32 API的相关部分。 您还可以查看所有与win32相关的模块,或使用gotAPI浏览Python标准库。 如果你需要比perfmon更强大的功能,我已经使用过ProcessMonitor。 |