Когда мы завершаем процесс (например, с помощью диспетчера задач и т.д.), Windows немедленно восстанавливает используемую оперативную память?
Или Windows все еще сохраняет оперативную память, используемую для этого процесса?
Когда мы завершаем процесс (например, с помощью диспетчера задач и т.д.), Windows немедленно восстанавливает используемую оперативную память?
Или Windows все еще сохраняет оперативную память, используемую для этого процесса?
Да. Страницы памяти переназначаются в Свободный пул, где они могут быть выделены для новых процессов по требованию. Процесс с очень низким приоритетом в ОС в конечном итоге обнулит эти страницы, добавив их в пул Zeroed. Вы можете наблюдать это в Process Explorer (хотя они обнуляются достаточно быстро, это трудно увидеть).
Страницы памяти в любом из этих пулов свободны для использования существующими или новыми процессами. Если в пулах Free или Zeroed нет свободных страниц, ОС начнет принудительно извлекать память из других процессов, чтобы при необходимости повторно использовать страницы физической памяти. В эту группу входят 2 комплекта: резервные и измененные страницы. Резервная страница - это страница, которая уже была перенесена в файл подкачки и может быть быстро переназначена другому процессу (или в пределах одного и того же). На измененной странице установлен грязный флаг, и ее необходимо сохранить в файле подкачки, прежде чем она будет переназначена.
Я зависит, какую оперативную память вы имеете в виду. Если вы имеете в виду оперативную память, содержащую данные, измененные процессом, то да. Эти значения никогда не смогут быть использованы снова. Поэтому оперативная память должна быть помечена как свободная.
Если вы имеете в виду оперативную память, содержащую части исполняемого файла, нет, эта оперативная память не восстанавливается. Он уже был помечен как отбрасываемый, поскольку система всегда может прочитать данные с диска, если это необходимо. Освобождение оперативной памяти сразу же будет отстой по двум причинам:
1) Это полностью потраченное впустую усилие. Если компьютер освобождает оперативную память, и она не нужна в ближайшее время, усилия по ее освобождению не принесут никаких результатов. Если компьютер освобождает ОЗУ и это необходимо в ближайшее время, усилия по его освобождению просто вынуждают систему снова использовать ее, что приводит к удвоенным усилиям. (Система могла просто оставить ее непригодной для использования и переключить на другое использование, даже не освободив ее.)
2) Это лишает систему возможности использовать эти данные снова. Если та же самая программа запускается снова, наличие данных в оперативной памяти сохраняет дисковый ввод-вывод.