C# 当内存转储显示正在使用的内存非常少时,调试内存不足的情况

C# 当内存转储显示正在使用的内存非常少时,调试内存不足的情况,c#,memory-leaks,windbg,C#,Memory Leaks,Windbg,我有一个C#/Managed进程由于内存不足异常而失败,但是检查转储显示实际使用的内存很少。我希望能得到一些帮助,找出下一步的调查步骤 我有一个违规过程的完整内存转储,我正在使用WinDBG和SOS来尝试找出发生了什么 内存转储大小为1949280487字节 !EEHeap-gc给出gc堆大小:大小:0xd8dcd0(14212304)字节。!验证堆和!DumpHeap-stat显示一致的数字,因此我认为应该查看本机内存而不是托管内存 !heap-s显示了一个具有1409884 kCommit的

我有一个C#/Managed进程由于内存不足异常而失败,但是检查转储显示实际使用的内存很少。我希望能得到一些帮助,找出下一步的调查步骤

我有一个违规过程的完整内存转储,我正在使用WinDBG和SOS来尝试找出发生了什么

  • 内存转储大小为
    1949280487字节
  • !EEHeap-gc
    给出
    gc堆大小:大小:0xd8dcd0(14212304)字节。
    !验证堆
    !DumpHeap-stat
    显示一致的数字,因此我认为应该查看本机内存而不是托管内存
  • !heap-s
    显示了一个具有
    1409884 k
    Commit的堆,它看起来很有希望(详细信息如下)
  • !heap-stat-h01740000
    (对于1.4GB堆)表示使用的内存量最小(详细信息如下)。第一个条目的总大小为
    0x25fec=155628字节
    ,并调用“总忙字节数”的2.98%,这似乎表明
    5222416
    总忙字节数甚至与堆的提交大小不可比
  • 在这一点上,我达到了我认为有能力调查的终点,进入了疯狂投机的领域

    • 这可能只是本机内存碎片吗?似乎1.4GB的提交和使用中的5MB是用碎片来解释的
    • !address
      显示0x41000 PAGE_READWRITE和0x1000 PAGE_NOACCESS之间的大量交替。什么能解释这一切
    • 在PAGE_READWRITE块中,内容大部分为空,带有
      • db 7fdd8000 L41000
        显示的大多是空字节,重复的相同字符串散布在其中

      • 例如
        du7fdd804c
        (代码>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0代码>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0%2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0%1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0%1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 26bos%3D1111%2C1111%26ps%3D1111%2C1111%26ss%3D1920%2C1080%26pt%3D0%26d(潜在的敏感数字替换为1,HTML解码为
        0=goog\u update\u data.3=adk=1111111111&tt=1111111&bs=1111111&mtos=011111111111111&tos=01111111,0,0,0&p=1111111111&iehp=1&mcvt=1111111&rs=3&ht=0&tfs=1111&tls=1111111&mc=0.11感谢大家在这方面的帮助和指点。我们最终能够做到这一点。)将有问题的组件隔离到承载的WinForms WebBrowserControl,该控件正在加载一个外部页面,而该页面本身在浏览器中正在泄漏内存。我们可以通过简单地更改配置以不再加载仪表板中过时且有缺陷的页面来缓解此问题(幸运的是,它不再有用)


        回想起来,所有迹象都表明泄漏既不是托管的(.NET)泄漏也不是纯粹的本机泄漏,因为我们尝试的工具都没有缩小它的范围。

        可能是由于碎片造成的?是否有可能5MB繁忙字节会对应1.4GB的提交,即使它是难以置信的碎片?此外,如果您怀疑Webbrowser,请尝试CefSharp:出于好奇,当您遇到错误时,您打算做什么?@magicandre1981:如果大部分内存在
        堆中而不是
        中,为什么要使用.NET探查器?UMDH应该更适合吗?
        LFH Key                   : 0xd4a58b52
        Termination on corruption : DISABLED
          Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt  Lock  Fast 
                            (k)     (k)    (k)     (k) length      blocks cont. heap 
        -----------------------------------------------------------------------------
        01740000 00000002 1409924 1409884 1409868    416   320   293    2      0   LFH
        014e0000 00001002     116     64     60     10     7     1    0      0   LFH
        01c20000 00001002   53284  52388  53228    491   116    14    0      0   LFH
        03590000 00001002      60      4     60      0     1     1    0      0      
        01b80000 00041002      60      4     60      2     1     1    0      0      
        05a50000 00001002    1136    124   1080     24    10     2    0      0   LFH
        05b40000 00001002      60     12     60      4     2     1    0      0      
        061f0000 00041002     116     64     60     16     4     1    0      0   LFH
        07410000 00001002      60     12     60      4     2     1    0      0      
        073f0000 00001002    3180   1156   3124     51    37     3    0      0   LFH
        09b60000 00001002    3180   1716   3124     17     7     3    0      0   LFH
        09af0000 00001002      60      4     60      2     1     1    0      0      
        0ece0000 00001002      60      8     60      6     1     1    0      0      
        13140000 00001002    1136    336   1080    301    10     2    0      0   LFH
        13130000 00001002    1136    116   1080     42    13     2    0      0   LFH
        133a0000 00001002     180     68    124     42     6     1    0      0   LFH
        -----------------------------------------------------------------------------
        
         heap @ 01740000
        group-by: TOTSIZE max-display: 20
            size     #blocks     total     ( %) (percent of total busy bytes)
            25fec 1 - 25fec  (2.98)
            23d0c 1 - 23d0c  (2.81)
            2000 f - 1e000  (2.36)
            1c843 1 - 1c843  (2.24)
            10 1896 - 18960  (1.93)
            17b8c 1 - 17b8c  (1.86)
            50 434 - 15040  (1.65)
            a36c 2 - 146d8  (1.60)
            114 10a - 11ec8  (1.41)
            c 17a7 - 11bd4  (1.39)
            84 215 - 112d4  (1.35)
            4000 4 - 10000  (1.26)
            fc24 1 - fc24  (1.24)
            10c9 f - fbc7  (1.24)
            3bc 43 - fa34  (1.23)
            80 1e2 - f100  (1.18)
            800 1e - f000  (1.18)
            4fe8 3 - efb8  (1.18)
            12c9 c - e16c  (1.11)
            d0 10b - d8f0  (1.06)
        
        --- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
        Heap                                  11774          5a0b8000 (   1.407 GB)  70.78%   70.35%
        <unknown>                              1652          131f3000 ( 305.949 MB)  15.03%   14.94%
        Image                                  1090          10649000 ( 262.285 MB)  12.88%   12.81%
        Stack                                    93           1a10000 (  26.063 MB)   1.28%    1.27%
        Free                                    399            c4f000 (  12.309 MB)            0.60%
        Other                                    14             53000 ( 332.000 kB)   0.02%    0.02%
        TEB                                      31             47000 ( 284.000 kB)   0.01%    0.01%
        PEB                                       1              3000 (  12.000 kB)   0.00%    0.00%
        
        --- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal
        MEM_PRIVATE                           13378          67145000 (   1.611 GB)  81.02%   80.53%
        MEM_IMAGE                              1199          12bf5000 ( 299.957 MB)  14.74%   14.65%
        MEM_MAPPED                               78           5667000 (  86.402 MB)   4.24%    4.22%
        
        --- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
        MEM_COMMIT                            13802          758dc000 (   1.837 GB)  92.40%   91.84%
        MEM_RESERVE                             853           9ac5000 ( 154.770 MB)   7.60%    7.56%
        MEM_FREE                                399            c4f000 (  12.309 MB)            0.60%
        
        --- Protect Summary (for commit) - RgnCount ----------- Total Size -------- %ofBusy %ofTotal
        PAGE_READWRITE                         7089          5dd90000 (   1.466 GB)  73.76%   73.32%
        PAGE_EXECUTE_READ                       164           c603000 ( 198.012 MB)   9.73%    9.67%
        PAGE_READONLY                           431           8d13000 ( 141.074 MB)   6.93%    6.89%
        PAGE_NOACCESS                          5698           1642000 (  22.258 MB)   1.09%    1.09%
        PAGE_WRITECOPY                          211            cee000 (  12.930 MB)   0.64%    0.63%
        PAGE_EXECUTE_READWRITE                   87            291000 (   2.566 MB)   0.13%    0.13%
        PAGE_EXECUTE_WRITECOPY                   38            12f000 (   1.184 MB)   0.06%    0.06%
        PAGE_EXECUTE                             20             a7000 ( 668.000 kB)   0.03%    0.03%
        PAGE_READWRITE|PAGE_GUARD                64             9f000 ( 636.000 kB)   0.03%    0.03%
        
        --- Largest Region by Usage ----------- Base Address -------- Region Size ----------
        Heap                                        178af000            346000 (   3.273 MB)
        <unknown>                                    f613000           1ead000 (  30.676 MB)
        Image                                       63341000           10ae000 (  16.680 MB)
        Stack                                        de80000             fd000 (1012.000 kB)
        Free                                               0             10000 (  64.000 kB)
        Other                                       7f2a0000             23000 ( 140.000 kB)
        TEB                                          10cc000              3000 (  12.000 kB)
        PEB                                          10ba000              3000 (  12.000 kB)
        
        7f3d8000 7f419000    41000 MEM_PRIVATE MEM_COMMIT  PAGE_READWRITE                     Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f419000 7f41a000     1000 MEM_PRIVATE MEM_COMMIT  PAGE_NOACCESS                      Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f41a000 7f45b000    41000 MEM_PRIVATE MEM_COMMIT  PAGE_READWRITE                     Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f45b000 7f45c000     1000 MEM_PRIVATE MEM_COMMIT  PAGE_NOACCESS                      Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f45c000 7f49d000    41000 MEM_PRIVATE MEM_COMMIT  PAGE_READWRITE                     Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f49d000 7f49e000     1000 MEM_PRIVATE MEM_COMMIT  PAGE_NOACCESS                      Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f49e000 7f4df000    41000 MEM_PRIVATE MEM_COMMIT  PAGE_READWRITE                     Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f4df000 7f4e0000     1000 MEM_PRIVATE MEM_COMMIT  PAGE_NOACCESS                      Heap       [ID: 0; Handle: 01740000; Type: Segment]
        7f4e0000 7f521000    41000 MEM_PRIVATE MEM_COMMIT  PAGE_READWRITE                     Heap       [ID: 0; Handle: 01740000; Type: Segment]