Windows-Server-2008
如何知道哪個應用程序正在消耗記憶體?
我在帶有 SQL、TFS 和其他一些工具的 2008 R2 伺服器上有以下程序列表和記憶體消耗(通過程序資源管理器報告):
如您所見,系統正在消耗 3.6 Gb 但程序列表僅顯示一個大程序(第一個
$$ SQL Server $$) 佔用不到 500 Mb,其他的都非常小,所以我不知道誰佔用了伺服器的幾乎所有記憶體。關於如何找出罪魁禍首的任何想法?
作業系統不關心,你也不應該關心。作業系統沒有記憶體壓力,它有 500MB 可用空間。所以它根本不關心記憶體是如何使用的。
它唯一能做的就是投入 CPU 來回收記憶體。但隨後會發生以下兩種情況之一:
- 反正那個記憶體也不會用。這將使釋放它的努力成為一種完全的浪費。這是最可能的結果,因為 500MB 已經閒置。無論如何,擁有更多可用記憶體對性能沒有影響。
- 將使用該記憶體。在這種情況下,讓它免費的努力將再次完全浪費,因為它只需要撤消即可。
現代作業系統只有在別無選擇時才會釋放記憶體。這是他們對記憶體所能做的最糟糕的事情,因為這需要他們做額外的工作來利用這些記憶體。他們可以更輕鬆地將記憶體從一種用途直接轉換到另一種用途,而無需增加浪費的中間步驟來釋放它。
它只是在做它最後發生的事情。作業系統不需要回收它,因為該記憶體最有可能的下一次使用是它之前已經在做的任何事情,而且它已經在那裡——免費。
也就是說,RAMMap會告訴你。但是在沒有記憶體壓力的機器上分析作業系統記憶體使用情況是完全沒有意義的。