Почему Windows не отображает должным образом объем оперативной памяти, используемый VirtualBox?

Почему Windows не отображает должным образом объем оперативной памяти, используемый VirtualBox?

Итак, из любопытства я решил посмотреть на использование оперативной памяти с запущенной виртуальной машиной Windows 7 (выделено 3 ГБ оперативной памяти). Я был... удивлен, увидев результаты, и мне интересно, почему эти результаты такие:

Диспетчер задач моего хост-компьютера (Win 8.1) показывает следующее:хост-процесс-проводник

Что на самом деле только показывает, насколько Chrome - это свинья... В любом случае, обратите внимание, что VirtualBox manager использует только 75 МБ ОЗУ. Ну, это разумно, в конце концов, это всего лишьменеджера не сама виртуальная машина. Но подождите, эти цифры (даже если вы сложите то, чего там не видите) не дают в сумме текущее использование оперативной памяти (9 ГБ, как указано на вкладке «Производительность»). Учитывая, что моя гостевая машина сейчас использует 1,5 ГБ, можно было бы ожидать, что она будет немного выше в списке...

Хорошо, давайте попробуем другой инструмент:RAMКарта

Для начала еще два скриншота из RAMMap:введите описание изображения здесь введите описание изображения здесь

Ну, этот кусок для «process private» выглядит примерно как 3 ГБ (если только я не ошибаюсь на порядок при беглом взгляде), но все равно — ничто, кроме Chrome, не потребляет более 100 МБ оперативной памяти.

О, эй, посмотрите на это:введите описание изображения здесь

Кажется, я наконец нашел, где это... но что это? VBox обрабатывает гостевую оперативную память как файл, который он просто загружает в оперативную память? Это... что-то совсем другое? Почему Windows не сообщает мне об этом в своем обычном инструменте «Диспетчер задач»?

TL;DR: Windows, ты не показываешь мне все использование оперативной памяти

решение1

Это показано в RAMMap подДрайвер заблокирован. Посмотрите, что 3 ГБ используется, и это то, что вы назначили виртуальной машине.

введите описание изображения здесь

Виртуальные машины используют эту память, поэтому никакие другие инструменты не могут ее использовать.

решение2

TL;DR: Процесс использовал память, перестал использовать память, а Windows просто пока слишком ленива, чтобы с этим разобраться.

Windows не показывает использование ОЗУ в диспетчере задач в разделе «Процесс», если только процесс не запросил ОЗУ и не имеет некоторого контроля над ее использованием. Если ОС предоставила ОЗУ процессу для резервного копирования сопоставлений, и эти сопоставления можно отменить, было бы запутанно показывать их взимаемыми с процесса. Это привело бы к сильно различающимся показателям использования для процесса, поскольку другие процессы стали бы причиной того, что эти сопоставления стали неподдерживаемыми.

Нет особой причины, по которой вас должно волновать, что Windows выделила 2 ГБ ОЗУ этому процессу, не потому что он запросил это, а просто потому что не смогла придумать ничего лучшего, как использовать эту память. И, конечно, Windows может забрать эту ОЗУ обратно в любой момент, если у нее есть что-то еще, что она делает с памятью.

Если процесс действительно использует память, она будет считаться частью его рабочего набора и будет отнесена к процессу. Если бы Windows очистила все сейчас, а процесс позже использовал память, Windows пришлось бы просто выделить ее снова. Поэтому нет смысла делать дополнительную работу сейчас, чтобы, по всей вероятности, сделать больше работы позже.

Связанный контент