2017-04-26 80 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的使用,從而減少了工作集大小。