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