如何理解windbg的内存转储?

如何理解windbg的内存转储?,windbg,Windbg,我们的一个网站正在使用2gb内存,我们正在试图理解为什么它会使用这么多内存(因为我们正试图将此网站推到azure,因为大内存使用意味着azure的账单会更高) 我获取了一个IIS转储,从任务管理器中,我可以看到它使用了2.2GB内存。 然后我运行!地址-摘要这是我得到的: --- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal Free

我们的一个网站正在使用2gb内存,我们正在试图理解为什么它会使用这么多内存(因为我们正试图将此网站推到azure,因为大内存使用意味着azure的账单会更高)

我获取了一个IIS转储,从任务管理器中,我可以看到它使用了2.2GB内存。 然后我运行
!地址-摘要
这是我得到的:

--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free                                    913      7fb`2f5ce000 (   7.981 Tb)           99.76%
<unknown>                              4055        4`a49c9000 (  18.572 Gb)  96.43%    0.23%
Heap                                    338        0`1dbd1000 ( 475.816 Mb)   2.41%    0.01%
Image                                  3147        0`0c510000 ( 197.063 Mb)   1.00%    0.00%
Stack                                   184        0`01d40000 (  29.250 Mb)   0.15%    0.00%
Other                                    14        0`001bf000 (   1.746 Mb)   0.01%    0.00%
TEB                                      60        0`00078000 ( 480.000 kb)   0.00%    0.00%
PEB                                       1        0`00001000 (   4.000 kb)   0.00%    0.00%

--- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_PRIVATE                            2206        4`ba7d2000 (  18.914 Gb)  98.20%    0.23%
MEM_IMAGE                              5522        0`148b0000 ( 328.688 Mb)   1.67%    0.00%
MEM_MAPPED                               71        0`019a0000 (  25.625 Mb)   0.13%    0.00%

--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_FREE                                913      7fb`2f5ce000 (   7.981 Tb)           99.76%
MEM_RESERVE                            2711        4`378f4000 (  16.868 Gb)  87.58%    0.21%
MEM_COMMIT                             5088        0`9912e000 (   2.392 Gb)  12.42%    0.03%

--- Protect Summary (for commit) - RgnCount ----------- Total Size -------- %ofBusy %ofTotal
PAGE_READWRITE                         1544        0`81afb000 (   2.026 Gb)  10.52%    0.02%
PAGE_EXECUTE_READ                       794        0`0f35d000 ( 243.363 Mb)   1.23%    0.00%
PAGE_READONLY                          2316        0`05ea8000 (  94.656 Mb)   0.48%    0.00%
PAGE_EXECUTE_READWRITE                  279        0`020f4000 (  32.953 Mb)   0.17%    0.00%
PAGE_WRITECOPY                           92        0`0024f000 (   2.309 Mb)   0.01%    0.00%
PAGE_READWRITE|PAGE_GUARD                61        0`000e6000 ( 920.000 kb)   0.00%    0.00%
PAGE_EXECUTE                              2        0`00005000 (  20.000 kb)   0.00%    0.00%

--- Largest Region by Usage ----------- Base Address -------- Region Size ----------
Free                                      5`3fac0000      7f9`59610000 (   7.974 Tb)
<unknown>                                 3`06a59000        0`f9067000 (   3.891 Gb)
Heap                                      0`0f1c0000        0`00fd0000 (  15.813 Mb)
Image                                   7fe`fe767000        0`007ad000 (   7.676 Mb)
Stack                                     0`01080000        0`0007b000 ( 492.000 kb)
Other                                     0`00880000        0`00183000 (   1.512 Mb)
TEB                                     7ff`ffe44000        0`00002000 (   8.000 kb)
PEB                                     7ff`fffdd000        0`00001000 (   4.000 kb)
——使用摘要-------------------RgnCount----------总大小---------busy%占总大小的%
免费913 7fb`2f5ce000(7.981 Tb)99.76%
4055 4`a49c9000(18.572 Gb)96.43%0.23%
堆338 0`1dbd1000(475.816 Mb)2.41%0.01%
图像3147 0`0c510000(197.063 Mb)1.00%0.00%
堆栈1840`01d40000(29.250 Mb)0.15%0.00%
其他140001BF000(1746MB)0.01%0.00%
TEB 60 0`00078000(480.000 kb)0.00%0.00%
PEB10`000011000(4000KB)0.00%0.00%
---类型摘要(对于忙碌)---RGN帐户------------总大小----------总线的百分比占总大小的百分比
MEM_PRIVATE 2206 4`ba7d2000(18.914 Gb)98.20%0.23%
MEM_图像5522 0`148b0000(328.688 Mb)1.67%0.00%
MEM_映射71 0`019万(25.625 Mb)0.13%0.00%
---状态摘要-------------------RGN帐户----------总大小---------BUSY的百分比占总大小的百分比
MEM_FREE 913 7fb`2f5ce000(7.981 Tb)99.76%
MEM_RESERVE 2711 4`378f4000(16.868GB)87.58%0.21%
MEM_COMMIT 5088 0`9912e000(2.392 Gb)12.42%0.03%
---保护摘要(用于提交)-RGN帐户-----------总大小---------Busy%占总大小的%
页面读写1544 0`81afb000(2.026 Gb)10.52%0.02%
页面执行读取7940`0f35d000(243.363 Mb)1.23%0.00%
页面只读2316 0`05ea8000(94.656 Mb)0.48%0.00%
页面执行读写279 0`020f4000(32.953 Mb)0.17%0.00%
页面写入副本92 0`0024f000(2.309MB)0.01%0.00%
页面读写页面保护61 0`000e6000(920.000 kb)0.00%0.00%
第2页执行0`00005000(20.000 kb)0.00%0.00%
---按使用情况划分的最大区域-----------基址------区域大小----------
免费5`3fac0000 7f9`59610000(7.974 Tb)
3`06a59000 0`f9067000(3.891 Gb)
堆0`0f1c0000 0`00fd0000(15.813 Mb)
图像7fe`fe767000 0`007ad000(7.676 Mb)
堆栈0`01080000`0007b000(492000 kb)
其他0`00880000`00183000(1.512 Mb)
TEB 7ff`ffe44000`000020000(8000 kb)
PEB 7ff`fffdd000`000011000(4.000 kb)
有很多东西我真的不明白:

  • Web服务器总共有8GB内存,但使用情况摘要中的空闲部分显示为7.9Tb?为什么?

  • Unknown显示19.572GB,但该Web服务器总共有8GB内存。为什么?

  • 任务管理器显示,私有内存工作集的大小类似于2.2GB,但如果我将堆、映像和堆栈加在一起,它只有700MB左右,那么剩余的1.5GB内存在哪里?或者我完全读取了错误的输出
  • 非常感谢

    Web服务器总共有8GB内存,但使用情况摘要中的空闲部分显示为7.9Tb?为什么?

    8 GB RAM是物理内存,即填充在电脑DDR插槽中的内存。8 TB是虚拟内存,也可以存储在页面文件中

    32位进程的虚拟内存可以是4 GB,具体取决于64位进程的操作系统限制

    Unknown显示19.572GB,但该Web服务器总共有8GB内存。为什么?

    19 GB是
    内存管理器使用的虚拟内存量,例如.NET或直接调用
    VirtualAlloc()

    即使19 GB大于8 GB,也不一定意味着内存已交换到磁盘。这取决于内存的状态。查看
    MEM_RESERVE
    ,我们发现其中大部分尚未投入使用。因此,您的应用程序可能仍然具有良好的性能

    任务管理器显示,私有内存工作集的大小类似于2.2GB,但如果我将堆、映像和堆栈加在一起,它只有700MB左右,那么剩余的1.5GB内存在哪里?或者我完全读取了错误的输出


    其余部分在
    中,因此任务管理器显示的总和甚至超过2.2 GB。工作集大小指示进程使用了多少物理RAM。理想情况下,一切都在RAM中,因为RAM是最快的。但RAM是有限的,并不是所有的应用程序都适合RAM。因此,不经常使用的内存被交换到磁盘,这减少了物理RAM的使用,从而减少了工作集的大小。

    64位应用程序在win8之前有8TB的虚拟内存,更高版本为128TB,这就是为什么您会看到这么大的数字。使用Analyzer分析dmp的内存使用情况,这比WindBG更容易。谢谢,我现在明白了。此外,1.5GB可以在管理堆-gc中找到。