2017-04-26 74 views
0

我们的一个网站是使用像2GB的记忆,而我们正试图了解为什么它是用这么多(因为我们正在努力这个网站推到蔚蓝,大内存使用率就是从蔚蓝的更高法案)。如何理解windbg的内存转储?

我花了一个IIS转储,并从任务管理器,我可以使用像2.2GB momory看到。 后来我跑!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内存,但免费部分在Usage Summary中显示7.9Tb?为什么?

  2. 未知物表示19.572GB,但是网络服务器总共具有8GB存储。为什么?

  3. 任务管理器显示的私有内存工作集就像2.2GB,但如果我添加堆,图像和叠加在一起,只有700MB左右,所以在哪里其余1.5 GB内存或者我完全读取输出错了吗?

非常感谢

+0

64位应用程序具有8TB的虚拟内存,直到win8,后来的版本128TB,这就是为什么你看到这个大数字。使用[DebugDiag2](https://www.microsoft.com/en-us/download/details.aspx?id=49924)分析器来分析dmp的内存使用情况,这比windbg更容易 – magicandre1981

+0

谢谢,我明白现在。另外1.5GB可以在管理堆中找到-gc。 – daxu

回答

0

的网络服务器总共有8GB内存,但免费部分中的用法总结出7.9Tb?为什么?

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

虚拟存储器可以是4 GB为32位处理,并取决于OS的为64个处理的准确限制。

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

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

即使19 GB超过8 GB,这并不一定意味着内存被交换到磁盘。这取决于内存的状态。看看MEM_RESERVE,我们看到它大部分还没有被使用。因此,您的应用程序可能仍然有良好的性能。

任务管理器显示的私有内存工作集就像2.2GB,但如果我添加堆,图像和叠加在一起,只有700MB左右,所以在哪里其余1.5 GB内存或者我完全读取输出错了吗?

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