用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
P - 切换分页非分页内存
右键 - 属性 - 选项 - 编辑选项 - 勾选快速编辑模式
这样,通过连续多次记录相隔一定时间的poolmon输出信息并比较它们的差别,可以找出存在内存泄露的程序
http://blog.csdn.net/moreorless/article/details/3369525
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
勾选 Enable pool tagging
3).重启系统
P - 切换分页非分页内存
D - 按分配与未释放的差来排列
右键 - 属性 - 选项 - 编辑选项 - 勾选快速编辑模式
还可以把缓冲区大小调大点
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://blog.csdn.net/moreorless/article/details/3369525