Во-первых, не размещайте файл подкачки на SSD. В то время как твердотельные накопители стали лучше относиться к выравниванию износа, файл подкачки часто записывается, и он будет ухудшать работу вашего твердотельного накопителя намного быстрее, чем обычное использование.
То, что многие люди не понимают, - то, что у окон никогда действительно нет свободной памяти. Существует несколько МБ, которые остаются свободными для пакетных запросов, но в остальном разница между активной используемой памятью приложения и общей памятью обычно используется так называемой «резервной» памятью.
Это страницы памяти, которые могут быть выгружены при необходимости (резервная память - большой, большой кэш), поэтому с точки зрения приложения она доступна, но они ни в коем случае не используются. Обычно они функционируют как дисковый кеш или кеш файлов подкачки.
Цель Windows - сохранить данные, которые наиболее вероятно будут использоваться в этом резервном кэше, на основе шаблонов использования. Чтобы использовать надуманный пример, давайте сравним относительное значение частной памяти программы, такой как Центр обновления Windows (обычно настраиваемой для запуска один раз в неделю), с кэшированием содержимого вашего рабочего стола в этой резервной памяти:
В большинстве случаев Центр обновления Windows спит. Он удерживает память и, по большей части, не делает с ней абсолютно ничего ценного, пока ждет расписание. С другой стороны, содержимое папки вашего рабочего стола может постоянно запрашиваться, особенно если вы хотите сохранить в нее файлы.
В этом случае Windows будет выгружать память, выделенную для Центра обновления Windows (даже если память не заполнена, и использовать пространство, выделенное в ОЗУ, для кэширования содержимого вашего рабочего стола. Это повышает производительность для ты.
Windows принимает тысячи таких решений и управляет дисковым кешем для сотен файлов, постоянно записываемых фоновыми службами, пытаясь сбалансировать это с требованиями к памяти активных приложений. Иногда он ошибается на мгновение, и нам, возможно, придется подождать, пока он вернет данные в память, когда мы переключимся на приложение, которое некоторое время спит в фоновом режиме. Но о чем вам следует подумать, если бы оно полностью сохраняло это приложение в памяти, сколько других приложений, в свою очередь, были бы сбиты в ожидании завершения записи и чтения на диск, или сами были бы вынуждены выгружаться? Что делать, если это были приложения, которые вы использовали в то же время?
Приложения часто выделяют страницы памяти, которые используются очень редко, например, код запуска (используется один раз, а затем не требуется), код завершения работы (используется один раз, а затем не требуется) или код обновления. Нецелесообразно хранить все это в памяти, когда есть гораздо более важные области применения, поэтому, как только Windows идентифицирует участки кода, которые не нужны для текущей работы приложения, она с радостью выводит эти разделы в файл подкачки, даже если технически он мог сохранить их в памяти.
(И на самом деле, в зависимости от приложений, системы могут часто выделять больше памяти, чем на самом деле, ожидая, что большая ее часть будет выгружена. Если вы смотрите на детальную разбивку памяти, взимается плата «Commit» или «Commit»). Это объем памяти, выделенный Windows для различных приложений. Файл подкачки используется для предоставления гарантий на эту память, даже если у нее недостаточно физической памяти для ее покрытия.)
Я только что заметил, что вы сделали различие между доступной и свободной памятью в своем вопросе; Приношу свои извинения, если вы чувствуете лекцию и уже знаете разницу. В идеале свободная память всегда равна 0. Однако, хотя резервная память - это память, которая может быть освобождена, не всегда память может быть освобождена быстро. Если я попытаюсь записать файл размером 1 ГБ на диск, Windows собирается вставить его в дисковый кэш в памяти, если это возможно, а затем медленно записать его на жесткий диск в фоновом режиме. Если приложению необходимо запросить 50 МБ дополнительной памяти, но ни одна из них не доступна, поскольку этот огромный дисковый кэш все еще очищается, приложение будет зависать до тех пор, пока оно не станет доступным. Наличие небольшого буфера под рукой позволяет системе решить эту проблему с минимальной задержкой с точки зрения пользователя.