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

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

Этот вопрос следует за предыдущимКак точно проанализировать использование памяти в Windows 7?

Почему в системе, где реальные процессы потребляют только около 40% физической памяти (частный рабочий набор), а остальное каким-то загадочным образом съедается операционной системой, ядро ​​не позволяет процессам выделять больше памяти, даже если все еще есть около 800 МБ обнуленной памяти?

Память

Можно ли изменить настройки ядра, чтобы я мог использовать 100% оперативной памяти? Прямо сейчас, в диспетчере задач, когда я достигаю 80% использования памяти, ядро ​​ведет себя так, как будто это 100%, потому что это предел, когда приложение начинает зависать и не может выделить память. Как мне освободить эти 20%, чтобы я мог использовать всю имеющуюся у меня память до 100%? Почему эти 20% «зарезервированы» и для чего? Система — Windows 7 64 бит с 4 ГБ оперативной памяти в целом. Подкачка отключена из соображений производительности. (жесткий диск ужасно медленный, а включение подкачки делает компьютер практически непригодным для использования)

решение1

Частный рабочий набор не является всей памятью процесса:

Частные байты, рабочий набор, виртуальный размер

Виртуальный размер — это общий объем памяти, который может потребоваться программе для запуска. Многие программы не используют всю выделенную им виртуальную память, но запрашивают ее, чтобы убедиться, что у них достаточно памяти для выполнения любой операции, которую вы им запросите. Он также используется для файлов, отображенных в память, и других вещей, которые проще сделать с памятью (пространства общей памяти, IPC), но не связаны строго с процессом, запрашивающим частную память.

Чтобы это работало, ОС должна:

  • Дайте гарантию на память, что она будет доступна
  • Отклонить запрос памяти (в большинстве случаев это приведет к сбою/завершению работы приложения)

Обычно система выделяет эту неиспользуемую виртуальную память в файл подкачки, а затем только те ее части, которые фактически используются, занимают физическую оперативную память. Однако, отключая файл подкачки, вы заставляете ОС использовать физическую память для предоставления этих гарантий. Это означает, что вы получите много обнуленных страниц памяти, которые не могут быть выделены другому процессу.

Когда у вас есть файл подкачки, процессу требуется только где-то между Working Setи Private Bytesобъемом физической памяти. Когда вы отключаете файл подкачки, Windowsдолженвыделить ему весь Virtual Sizeобъем памяти или отклонить запрос памяти. (В мониторе ресурсов Windows это столбец Commit, поскольку WindowsСовершениеэтот объем виртуальной памяти для процесса.

решение2

Монитор ресурсов должен показать, есть ли у вас на самом деле свободная память.

Монитор ресурсов

Также смЕсть ли польза или вред от удаления файла подкачки на компьютере с 8 ГБ оперативной памяти?

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