如何理解windbg中的内存转储?

时间:2017-04-26 08:46:16

标签: windbg

我们的一个网站正在使用类似2gb的内存,我们正在努力理解为什么它使用了这么多(因为我们试图将这个网站推向天蓝色,因为大内存使用意味着更高的天蓝色账单)。

我从一个IIS转储和任务管理器,我可以看到它使用像2.2GB的妈妈。 然后我运行!address -summary,这就是我得到的:

--- 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)

我真的得不到很多东西:

  1. 网络服务器总共有8GB内存,但使用情况摘要中的免费部分显示为7.9Tb?为什么呢?

  2. Unknown显示19.572GB,但网络服务器总共有8GB内存。为什么呢?

  3. 任务管理器显示私有内存工作集类似于2.2GB,但是如果我将Heap,Image和Stack加在一起它只有大约700MB,那么其余的1.5 GB内存还是我完全读错了输出?
  4. 非常感谢

1 个答案:

答案 0 :(得分:0)

  

网络服务器总共有8GB内存,但使用情况摘要中的免费部分显示为7.9Tb?为什么呢?

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

对于32位进程,虚拟内存可以是4 GB,并且取决于64位进程的操作系统的确切限制。

  

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

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

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

  

任务管理器显示私有内存工作集类似于2.2GB,但是如果我将Heap,Image和Stack加在一起它只有大约700MB,那么其余的1.5 GB内存还是我完全读错了输出?

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