用poolmon來查找內存泄露


用poolmon來查找內存泄露

poolmon C:\WinDDK\7600.16385.1\tools\Other\i386\poolmon.exe
gflags     C:\WinDDK\7600.16385.1\Debuggers\gflags.exe

[步驟]:
1).修改注冊表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager

GlobalFlag 0x000400

 

2).gflags.exe

勾選 Enable pool tagging

 

3).重啟系統

 

4).打開poolmon 看到詳細的內存分配釋放信息
P - 切換分頁非分頁內存

D - 按分配與未釋放的差來排列

 

5).設置命令行窗口
右鍵 - 屬性 - 選項 - 編輯選項 - 勾選快速編輯模式

還可以把緩沖區大小調大點

 

6).鼠標左鍵選擇全部內容,回車

 

7).打開記事本,CTRL+V

 Memory: 3136424K Avail: 2672512K  PageFlts:  2504   InRam Krnl: 2864K P:58704
 Commit: 305964K Limit:5065664K Peak: 598068K            Pool N:14872K P:63108
 Tag  Type     Allocs            Frees            Diff   Bytes      Per Alloc

 NtFs Paged     22354 (   0)     16458 (   0)     5896  310656 (     0)     52
 MmSt Paged      8892 (   3)      3049 (  25)     5843 11600216 (-17480)   198
 CMVa Paged    497244 ( 243)    491734 ( 155)     5510  275648 (  3528)     50
 Ntf0 Paged     39087 (  32)     33784 (  32)     5303  184280 (     0)     34
 MmSm Paged      5049 (   0)       456 (   0)     4593  293952 (     0)     64
 FSim Paged      3971 (   0)        61 (   0)     3910  500480 (     0)    128
 IoNm Paged    400361 ( 645)    396911 ( 723)     3450  501632 ( -7424)    145
 NtfF Paged      3430 (   0)       727 (   0)     2703 2551632 (     0)    944
 Ntfo Paged     31970 (  64)     29291 (  64)     2679  267424 (     0)     99
 Ntff Paged     10264 (   0)      7616 (   0)     2648 2203136 (     0)    832
 CMNb Paged    565888 ( 224)    563791 ( 272)     2097  117432 ( -2024)     56
 CMDa Paged     58237 (  27)     56171 (  45)     2066  259568 ( -1464)    125
 Sect Paged     53359 ( 206)     51324 ( 229)     2035  177640 ( -2072)     87
 CMVI Paged     69712 (  36)     68199 (  75)     1513   53048 (  -112)     35
 NtFL Paged      1426 (   1)         0 (   0)     1426   57040 (    40)     40
 Ntfc Paged      3789 (  73)      2384 (  97)     1405  101160 ( -1728)     72
 SYSA Paged      6191 (   0)      4871 (   0)     1320  152056 (     0)    115
......



這樣,通過連續多次記錄相隔一定時間的poolmon輸出信息並比較它們的差別,可以找出存在內存泄露的程序

 

[參考資料]:

http://support.microsoft.com/kb/177415/zh-cn
http://blog.csdn.net/moreorless/article/details/3369525


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM