zoukankan      html  css  js  c++  java
  • !heap 手动查询内存泄漏

    1:查看所有堆信息,找到一个很大的堆
    0:243> !heap -s


    ************************************************************************************************************************
    NT HEAP STATS BELOW
    ************************************************************************************************************************
    LFH Key : 0x135b0978
    Termination on corruption : DISABLED
    Heap Flags Reserv Commit Virt Free List UCR Virt Lock Fast
    (k) (k) (k) (k) length blocks cont. heap
    -----------------------------------------------------------------------------
    013e0000 00000002 16472 14712 16364 2051 488 12 0 3b LFH
    External fragmentation 13 % (488 free blocks)
    01370000 00001002 3232 1264 3124 189 27 3 0 1 LFH
    External fragmentation 15 % (27 free blocks)
    01c20000 00001002 128828 84980 128720 4359 835 180 5 6 LFH
    Virtual address fragmentation 34 % (180 uncommited ranges)
    01bf0000 00001002 60 12 60 3 2 1 0 0
    02210000 00001002 60 12 60 2 2 1 0 0
    02b20000 00001002 1188 816 1080 25 31 2 0 5 LFH
    04c90000 00001002 1188 168 1080 12 9 2 0 0 LFH
    05430000 00001002 168 32 60 6 4 1 0 0 LFH
    05a10000 00001002 60 40 60 2 1 1 0 0
    07050000 00001002 1188 832 1080 444 23 2 0 0 LFH
    07ce0000 00001002 1188 148 1080 9 4 2 0 0 LFH
    07dc0000 00001002 1188 148 1080 9 4 2 0 0 LFH
    09d10000 00001002 60 8 60 6 1 1 0 0
    0b920000 00001002 15512 7060 15404 946 80 5 1 1 LFH
    External fragmentation 13 % (80 free blocks)
    0e7c0000 00001002 1188 512 1080 22 18 2 0 1 LFH
    0f420000 00001002 1188 280 1080 19 9 2 0 0 LFH
    118f0000 00001002 1188 608 1080 501 9 2 0 0 LFH
    11f90000 00001002 60 24 60 15 3 1 0 0
    12b60000 00001002 3232 1648 3124 48 41 3 0 0 LFH
    12ca0000 00001002 3232 2912 3124 1709 42 3 1 0 LFH
    External fragmentation 58 % (42 free blocks)
    148c0000 00001002 60 4 60 2 1 1 0 0
    18cb0000 00001002 1188 616 1080 316 54 2 0 0 LFH
    1a5e0000 00001002 3232 1940 3124 880 82 4 0 4 LFH
    External fragmentation 45 % (82 free blocks)
    1a570000 00001002 15512 14868 15404 829 63 21 4 0 LFH
    1ac70000 00001002 7324 5656 7216 397 186 4 1 0 LFH
    1a5c0000 00001002 60 44 60 22 2 1 0 0
    1b770000 00001002 1188 156 1080 56 19 2 0 0 LFH
    0e500000 00001002 1188 292 1080 62 27 2 0 0 LFH
    1cdf0000 00001002 1188 88 1080 23 10 2 0 1 LFH

    2:针对堆地址,查看内部信息,看内部内存的使用情况
    0:243> !heap -stat -h 01c20000
    heap @ 01c20000
    group-by: TOTSIZE max-display: 20
    size #blocks total ( %) (percent of total busy bytes)
    400000 1 - 400000 (25.16)
    40000 8 - 200000 (12.58)
    1c2256 1 - 1c2256 (11.06)
    13e748 1 - 13e748 (7.82)
    208 642 - cb610 (5.00)
    8b290 1 - 8b290 (3.42)
    897c4 1 - 897c4 (3.38)
    689 121 - 760a9 (2.90)
    4a5ba 1 - 4a5ba (1.83)
    48 d6c - 3c660 (1.48)
    489 bd - 35925 (1.32)
    14 2691 - 30354 (1.18)
    10000 3 - 30000 (1.18)
    20 1722 - 2e440 (1.14)
    18 1c0a - 2a0f0 (1.03)
    8000 5 - 28000 (0.98)
    2c cf1 - 2396c (0.87)
    219c0 1 - 219c0 (0.83)
    1f3a0 1 - 1f3a0 (0.77)
    5780 5 - 1b580 (0.67)

    3:第一块内存是个巨块,4M,以它为目标,
    查看所有体积和它一致的堆内存,找到UserPtr
    0:243> !heap -flt s 400000
    _HEAP @ 13e0000
    _HEAP @ 1370000
    _HEAP @ 1c20000
    HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
    1190b018 80200 0000 [00] 1190b020 400000 - (busy VirtualAlloc)
    _HEAP @ 1bf0000
    _HEAP @ 2210000
    _HEAP @ 2b20000
    _HEAP @ 4c90000
    _HEAP @ 5430000
    _HEAP @ 5a10000
    _HEAP @ 7050000
    _HEAP @ 7ce0000
    _HEAP @ 7dc0000
    _HEAP @ 9d10000
    _HEAP @ b920000
    _HEAP @ e7c0000
    _HEAP @ f420000
    _HEAP @ 118f0000
    _HEAP @ 11f90000
    _HEAP @ 12b60000
    _HEAP @ 12ca0000
    _HEAP @ 148c0000
    _HEAP @ 18cb0000
    _HEAP @ 1a5e0000
    _HEAP @ 1a570000
    _HEAP @ 1ac70000
    _HEAP @ 1a5c0000
    _HEAP @ 1b770000
    _HEAP @ e500000
    _HEAP @ 1cdf0000


    4:根据UserPtr 查看调用栈,但是不是所有调用栈都能看到
    比如这个,就看不到调用栈
    0:243> !heap -p -a 1190b020
    address 1190b020 found in
    _HEAP @ 1c20000
    HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
    1190b018 80200 0000 [00] 1190b020 400000 - (busy VirtualAlloc)


    5:如果第四步能看到调用栈,则能看到此内存的申请调用栈,
    若此是个内存泄露,则可以看到内存泄漏点的调用栈。

  • 相关阅读:
    SQL Server 数据库基础编程
    SQL Server 数据库设计
    SQL Server T-SQL高级查询(转)
    MVC组件分析(转)
    HTTP MIME类型即HttpResponse.ContentType属性值列表
    dreamweaver cs6 的破解方法
    varchar和Nvarchar区别
    .NET 可选择的转型路径(转)
    IT职场求生法则(转)
    HTML常见元素集锦
  • 原文地址:https://www.cnblogs.com/suanguade/p/13719127.html
Copyright © 2011-2022 走看看