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