題 Process Explorer沒有顯示我的RAM的最大用戶


有誰知道為什麼Process Explorer可能會顯示我的Virtual Box實例的內存使用這些奇怪的值?

這是真實的數字:

vmmap

但這是Process Explorer顯示的內容:

alt text

alt text

因此,該進程已提交1.2 GB的VM,其中1.1 GB是私有的。但Process Explorer只能看到196 MB的VM,而且只有48 MB的私有內存!這裡發生了什麼?

編輯:這個記憶是  剛剛保留。它實際上得到了 用過的

alt text


6
2017-09-06 16:41


起源


由於機會很高,這是一個錯誤,這兩個工具是由Sysinternals ...你可能想在他們的論壇上通過類似的描述通知他們: forum.sysinternals.com - Tom Wijsman
它是否在任務管理器中正確顯示? - Connor W
@Connor任務管理器顯示與Process Explorer相同的數字。 - RomanSt


答案:


Mark Russinovich親切地解釋說,這是因為VirtualBox  大量的內存,其中 請求操作系統將其保留在工作集中

但是,如果你只是嘗試 VirtualLock一堆RAM,你不會看到這個。所有RAM都將被愉快地考慮在內,就像它應該的那樣。所以它是VirtualBox分配這個內存的方式。順便說一句,它也會影響ProcessHacker。

關於這一點的奇怪之處在於ProcessHacker正確枚舉了所有已分配的內存範圍,只需添加它們就會得到正確的值,但操作系統報告的計數器是錯誤的。幾GB。不好!

我稱之為Windows RAM報告的怪癖。我稱這是一個錯誤,但它可能已經存在了至少十年,所以到現在為止我想可以稱之為預期的行為......一個在Process Explorer和Process Hacker中沒有正確使用的行為。


4
2017-09-17 18:41



我想鎖定內存只是出於特殊目的,連同文章中所述的原因可能就是為什麼它從來沒有被計算過......很好,你認為它遠遠不夠,是的... Mark Russinovich是男人當Sysinternals論壇無法幫助你時,這樣的答案。 :-) - Tom Wijsman
在Windows 7和Windows 8.1之間報告的方式有所不同嗎?在我的W7機器上,VBox聲稱擁有~120MB WS和250MB“虛擬大小”,但在W8.1中它清楚地表明VBoxHeadless進程的“虛擬大小”為5.5GB。 - analytik


VMMap可能有錯誤 使Committed包含交換文件中丟棄的頁面或頁面。

因此現在它看起來像非活動內存......它被分配為一個保留(或作為一個bug)。

工作集只包含活動內存,VMMap和Process Explorer確實顯示相同的WS ...


1
2017-09-06 16:51



確實看起來VMMap絕對沒有任何地方可以計算保留內存。之前我沒有註意到。諷刺Mark如何使任務管理器使用不一致的術語,然後自己計算保留的內存和提交的內存...... - RomanSt
是的,各個產品的名稱應該更加一致...... - Tom Wijsman
好的,不是這個。當我啟動VM時,ProcessExplorer顯示Commit的總體增加了1.1 GB左右,物理使用量也增加了1.1 GB。但是,新流程中沒有一個計數器具有這些數字。 - RomanSt
我的猜測是內存是由驅動程序而不是VM進程分配的。另一個原因可能是由於VM軟件具有硬件加速和嵌套分頁選項,導致Windows無法查看該內存的位置... - Tom Wijsman
事實證明,這個內存不計算在內,因為它被鎖定在工作集中。這實際上並沒有解釋 為什麼 它沒有在工作集計數器中報告,但這是另一個問題。發表我自己的答案...... - RomanSt


RAM,虛擬內存,頁面文件和所有這些東西 :

內存,承諾字節:這是對虛擬需求的衡量   記憶。它顯示了多少字節   由進程分配和   操作系統有哪些   提交了RAM頁面框架或頁面   頁面文件中的插槽(或兩者)。如   承諾字節增長高於   可用的RAM,分頁增加,和   正在使用的頁面文件的數量   增加。在某些時候,分頁   活動開始顯著   影響感知表現。

所以我確實認為Committed Bytes數量與VirtualBox無關 - 它只是系統中所有正在運行的進程的物理RAM頁面的總和。在這種情況下,Process Explorer返回的數據是正確的。


0
2017-09-06 16:50





使用SysInternals RAMMAP 我想你可以看到ram被記錄為'DriverLocked'。

但是我不知道你是如何從這個工作回到鎖定它的驅動程序。而且重要的是,驅動程序不會是VirtualBox程序,而是VirtualBox安裝和使用的驅動程序。

如果只是關閉虛擬機並不能釋放“DriverLocked”池中的ram,那麼你可以使用類似的工具 自動運行 查看啟動時加載的驅動程序並禁用它們。這是一個手動過程,如果有人知道如何告訴驅動程序鎖定內存,那將真的很感興趣。


0
2017-10-30 11:46