來源:http://www.cr173.com/html/13006_1.htmlhtml
解決Windows內存問題須要對操做系統的深刻理解,同時對於如何運用Windows調試器或性能監控器要有工做認知。若是你正試着獲得細節,諸如內核堆棧大小或硬盤內存消耗,你會須要調試器命令和內核數據架構相關的複雜經驗。面對進程地址空間來肯定私人與共享內存利用率或總堆棧大小,即便是經驗最豐富的管理員也會以爲頗具挑戰。編程
不要懼怕,RamMap和VMMap易化了解決內存問題的過程。你能夠從Sysinternals網站上下載這些免費工具。這兩個工具都是Mark Russinovich和Bryce Cogswell編寫的。緩存
RamMap架構
RamMap用於展現系統和進程內存狀態和利用率。它提供一個命名爲「使用計數」的概要欄,它列出全部各類各樣的系統內存分區,如分頁池和非分頁池、流程私密的、可共享的、硬盤空間、內核堆棧和映射文件。它還顯示被稱爲Metafile的緩存文件內存空間的數量。
工具
全部這些分區又進一步分類成不一樣類型的物理內存消耗,如活躍的、備用的、修改的、轉變的、調零的、免費的或糟糕的。這些列中的每個均可經過點擊列擡頭分類。全部這些術語在Russinovich的《Windows內部書》(即«深刻解析Windows操做系統»即«Windows Internals» )一書中都有解釋。如圖1所示,數據以圖形的列表視圖整齊展現。性能
圖1:RamMap 中的使用計數數據優化
RamMap還在「進程」欄中顯示進程內在利用率。在這裏你能夠看到全部列出的進程,還有它們相應的私有內存利用率。數據還包括全部佔用備用或修改頁面列表的進程內存,還有用於頁表項的內存量。網站
圖2:RamMap進程欄 url
RamMap的另外一種運用是顯示實際的物理內存用量,一頁一頁地識別內存清單、運用、文件名、進程、虛擬地址和池標籤等屬性。每一欄均可以分類,而且有一個過濾功能能夠用來有選擇性地分析數據。spa
圖3:RamMap物理頁面欄
最後,RamMap在展示緩存文件活動和數據上也作得不錯。你能夠運用「文件摘要」和「文件詳細信息」欄向下查看系統文件緩存來肯定文件路徑、它佔用的大小、相應內存是在活躍的、備用的仍是修改的頁面列表中。
圖4:RamMap文件摘要欄
VMMap
到目前爲止,咱們已經明白了RamMap如何展現系統和進程內存使用。若是你要解決的內存問題看起來和特定的進程或應用相關,你也許有必要經過使用VMMap來仔細看看。VMMap是一個過程導向的工具,它讓你能夠查看現有的進程或者追蹤新的進程並查看其內存使用,它提供的信息遠比RamMap詳細。
VMMap啓動時,它提示你選擇你想要審查的如今進程或是開啓一個新的進程。若是你啓動了一個新進程,你將能追蹤內存利用率,如堆和虛擬分配。在下面的圖5中,我選擇了communicator.exe進程。
圖5: VMMap顯示
一旦VMMap的主窗口顯示,你能夠看見屏幕分紅幾部分。頂部部分是進程內存消耗的一個圖形概要。它分紅提交空間、專用字節和工做集。在屏幕的中部部分,內存利用率根據運用分類,如專有數據、共享數據、圖片、映射文件和堆大小。最後,屏幕底部顯示每一個虛擬地址相應的頁面類型是什麼、所用的工做集大小和數量、頁面保護、全部區塊和分區的細節。顏色標記讓你能夠快速地看到特定類型的內存消耗多少空間。
VMMap提供有關進程地址空間的兩個額外視圖,包括一個「字符串」視圖和一個「分割」視圖。字符串視圖讓你能夠搜索地址空間中存在的全部可讀字符串。分割視圖以顏色標記的方式顯示進程虛擬地址空間,所以你能夠看到多種分配、它們的大小以及它們的連續性如何。