UMDH(用户模式转储堆user-mode dump heap)是一个用于分析进程windows堆分配的工具。 windows
能够用于分析进程的内存泄露问题。 服务器
使用 UMDH 请参见内存泄漏前,请执行如下步骤: app
一、安装 UMDH 实用程序。 工具
二、设置系统 PATH 环境变量包含 UMDH 的安装的文件夹。 spa
三、请将 _NT_SYMBOL_PATH 环境变量设置为 Microsoft 符号服务器的路径,以便 UMDH 能够找到调试符号文件。按如下设置,会自动下载操做系统对应的符号文件 操作系统
set _NT_SYMBOL_PATH= 调试
"SRV*c:\symbols*http://msdl.microsoft.com/download/symbols;d:\myapp\bin" 进程
d:\myapp\bin为PDB所在目录 内存
若要生成堆分配的转储文件,必须使用 Gflags.exe 实用程序,它也是包含在 Windows 调试工具产品,让操做系统知道您想要跟踪分配的内核。 产品
gflags -i notepad.exe +ust
完成后,能够利用UMDH工做生成转储文件
Umdh -p:PID -f:"d:\old.log"
Umdh -p:PID -f:"d:\new.log"
umdh.exe "D:\old.log" "D:\new.log" -f:"D:\result.log"
打开D:\result.log 文件,能够看到相似如
// + BYTES_DELTA (NEW_BYTES - OLD_BYTES) NEW_COUNT allocs BackTrace TRACEID
// + COUNT_DELTA (NEW_COUNT - OLD_COUNT) BackTrace TRACEID allocations
// ... 调用堆栈 ...
// where:
//
// BYTES_DELTA - 先后两个文件间增长的字节
// NEW_BYTES - 后一个文件中字节数
// OLD_BYTES - 前一个文件中字节数
// COUNT_DELTA - 先后两个文件间增长的分配次数
// NEW_COUNT - 后一个文件中分配的次数
// OLD_COUNT - 前一个文件中的分配次数
// TRACEID - 栈标记,能够用于在UMDH 文件中查找分配定位
http://support.microsoft.com/kb/268343