• 用poolmon来查找内存泄露


    用poolmon来查找内存泄露

    poolmon C:WinDDK7600.16385.1 oolsOtheri386poolmon.exe
    gflags     C:WinDDK7600.16385.1Debuggersgflags.exe

    [步骤]:
    1).修改注册表
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession 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

  • 相关阅读:
    Redis 设计与实现 2:Redis 对象 redisObject
    Redis 设计与实现 1:数据库 redisDb
    KafkaProducer 简析
    G1 收集器
    KafkaMirrorMaker 的不足以及一些改进
    Redis 数据结构与对象编码 (Object Encoding)
    跨境 TCP 传输优化实录 — 使用 BBR 解决 LFN 问题
    TCP 协议简析
    使用模拟退火算法优化 Hash 函数
    LSM-Tree 与 B-Tree
  • 原文地址:https://www.cnblogs.com/adylee/p/11171679.html
Copyright © 2020-2023  润新知