繁体   English   中英

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

[英]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 是执行此操作的最佳工具之一,但请确保根据您希望监控的时间正确配置采样间隔。

例如,如果你想监控一个进程:

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

有了这些采样间隔,Perfmon 应该可以毫无问题地生成漂亮的计数器图形输出。

好吧,我使用了 perfmon,将结果导出到 csv,然后使用 excel 进行统计。 上次我需要监控流程时效果很好

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

与监控内存本身一样好,您可能正在考虑使用内存分析来识别泄漏或陈旧对象 - http://memprofiler.com/是一个不错的选择,但还有很多其他选择。

如果您想做一些非常具体的事情,请不要害怕编写自己的基于 WMI 的记录器在计时器上运行 - 您可以将其发送给您处理统计信息的电子邮件,当它增长太快或太高时发出警告,将其发送为用于图表等的 XML。

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

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

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

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

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

如果您需要比 perfmon 更强大的功能,我会使用 ProcessMonitor。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM