Windows Commit Charge ниже, чем физическая память?

3439
Unsigned

Я видел этот вопрос, и он не является дубликатом, несмотря на название, поскольку данный ответ не отвечает на мой вопрос.

В настоящее время у меня есть система Windows XP, которая сообщает об использовании системы Commit как меньше, чем использование физической памяти. Насколько я понимаю, System Commit - это общий объем файла подкачки плюс использование оперативной памяти. Как говорит Википедия:

Объем файла подкачки, который будет использоваться, если будет удалено все текущее содержимое оперативной памяти.

Итак, как можно использовать ОЗУ выше, чем сумма ОЗУ и использование файла подкачки?

Скриншот Process Explorer

4

1 ответ на вопрос

7
shf301

Сумма комиссионного сбора не включает всю физическую память; он учитывает только всю физическую память, которая может быть выгружена на диск.

От расширения границ Windows - виртуальная память (я бы порекомендовал прочитать всю статью)

Как и следовало ожидать из описания гарантии фиксации, предел фиксации - это сумма физической памяти и размеров файлов подкачки. На самом деле, не вся физическая память имеет значение для предела фиксации, поскольку операционная система резервирует часть физической памяти для собственного использования.

а также

Не вся виртуальная память, выделяемая процессом, учитывается в пределе фиксации. Как вы видели, зарезервированная виртуальная память - нет. Виртуальная память, представляющая файл на диске, называемая представлением сопоставления файлов, также не учитывается в пределе, если только приложение не запрашивает семантику копирования при записи, поскольку Windows может отбрасывать любые данные, связанные с представлением, из физической памяти, а затем получить его из файла. Таким образом, виртуальная память в адресном пространстве Testlimit, где отображаются ее исполняемый и системные образы DLL, не учитывается в пределе фиксации. Существует два типа виртуальной памяти процесса, которые учитываются при ограничении фиксации: частная и с подкачкой файла подкачки.

Таким образом, использование памяти некоторых ОС не учитывается до этого предела, равно как и отображение файлов в памяти. В Windows все файлы EXE и DLL загружаются как файлы с отображением в памяти. Они загружаются в физическую память, но поскольку они не изменяются после загрузки (обычно), Windows не поддерживает их в файле подкачки, поскольку она знает, что может просто перечитать их из файла на диске - вот почему они не не рассчитывать на предел фиксации.

Небольшое исправление, shf301: Вы написали, что «commit commit [...] считает только всю физическую память, которая может быть выгружена на диск». Это должно быть написано «учитывает только все виртуальное адресное пространство, которое может быть выгружено в файл подкачки». Во-первых, фиксация заряда - это количество виртуальной, а не физической памяти. Во-вторых, возможно, даже обычное явление, отображение файлов с отображением в память для чтения / записи. Если страница, полученная из такого файла, модифицируется, то, если она должна быть выгружена на диск, она записывается обратно в файл, из которого была получена, а не в файл подкачки. Jamie Hanrahan 9 лет назад 0