我正在尝试跟踪 Windows Server 2008 上的内存泄漏。Web 应用程序运行了不同的计划任务,我怀疑发生了泄漏,因此我想知道一天中的哪个特定时间内存使用量会增加。
是否存在一种工具可以用来仅跟踪该特定过程?
网站在带有 IIS 7 的 ASP.NET 上运行。
答案1
自 NT 以来,每个 Windows 服务器都带有性能日志和警报。可以使用“perfmon”mmc 工具访问它。您可以以不同的时间间隔添加总体内存或进程内存的计数器日志,然后在以后查看日志。Perfmon 允许您对几乎任何计数器窗口轨道进行检测。
看起来界面在 2008 年略有变化,但这里有一个简单的指南监控 JVM 的内存来自 ibm。计数器/日志的基本概念应该保持不变。
想要一个可以查看系统当前状态(和简要历史记录)的简单工具,请尝试进程探索器
答案2
也许最直接的方法是安装 DebugDiag 1.2,并启用 LeakTrack 功能。
启动 DebugDiag 后,选择“进程”选项卡,右键单击所需的 w3wp.exe 进程,然后选择“监视泄漏”。
您可以使用“规则”选项卡创建触发器来收集信息:
生成用户转储文件后,您可以使用“高级分析”选项卡,并运行内存压力分析器,它将检查转储文件并生成报告。
来自文档:
“内存泄漏监控功能旨在跟踪进程的内存分配。当系统上的进程在内存中持续增长直至系统变得不稳定或进程停止正常运行时,应使用此功能。调试工具将向指定进程注入 DLL 并监控一段时间内的内存分配。然后生成转储,并分析转储以确定哪些分配未被释放且最有可能导致内存泄漏。分配通常分为 3 类:缓存、稍后将释放的短期分配和内存泄漏。从一段时间内测量来看,这三种分配方法都有非常不同的分配模式。泄漏跟踪功能使用基于在特定时间段内测量的这些分配模式的公式来计算泄漏概率。”
调试诊断工具 v1.2
https://www.microsoft.com/en-us/download/details.aspx?id=26798