如何获取大内存使用量的完整内存转储

时间:2011-05-05 13:17:49

标签: windbg windows-server-2008-r2

我在运行在四核8G机器上的Windows 2008 64位系统上托管基于IIS的Web服务应用程序。当W3WP以7.6G的内存使用率运行时,可以进入几个实例。在包括RDP在内的系统上没有其他任何响应。右键单击任务管理器中的进程并创建转储,冻结系统及其所有线程很长一段时间(接近30分钟)。当在非工作时间发生冻结时,我们让转储运行一段时间(运行接近1小时),但仍然没有完成转储。为了获得系统,我们不得不杀死IIS

尝试了其他工具,如procexp,debug diag等,以创建完整的内存转储,并且都具有相同的结果

那么,社区使用什么工具来快速获取转储文件?或者没有冻结所有线程?我意识到后者可能是一个修辞问题。但是,如果在不长时间锁定系统的情况下生成如此大的转储文件有哪些选择呢?

2 个答案:

答案 0 :(得分:3)

IMO您不必等到进程内存增长到8 GB。我确信你可以通过3到4 GB的内容来检测内存泄漏。

Procdump有一个基于内存阈值的选项

  

-m用于创建进程转储的MB内存提交阈值。

我希望你这个选项可以转储进程的内存。

而SSD也有助于更快地写作。

答案 1 :(得分:3)

WPA a.k.a xperf(http://msdn.microsoft.com/en-us/performance/cc825801.aspx)是一款功能强大的工具,用于诊断应用程序。您将获得罪魁祸首分配的调用堆栈。您不必收集转储,它是无创的,并且在生产系统中不会加载太多

此处提供完整的分步信息。 http://msdn.microsoft.com/en-us/library/ff190906(v=VS.85).aspx