1

Windows резервирует часть памяти для внутреннего использования, которая обычно не выделяется приложениям. Этот резерв виден наиболее легко, если вы запускаете без файла подкачки или ограничивает размер файла подкачки относительно небольшим размером (например, 3 ГБ). Windows будет выделять в основном ОЗУ до предела, заполнять оставшееся свободное пространство в файле подкачки (если есть) и выдавать предупреждение о нехватке памяти, когда не осталось места под файлом подкачки и превышен предел выделенной ОЗУ.

Предел представляется в процентах от общего объема оперативной памяти системы. Windows 7 x64 предел обсуждается здесь и методы обход "низкое предупреждение памяти" обсуждаются здесь.

Отключение предупреждения о нехватке памяти имеет ряд преимуществ - вы можете использовать на 600 ГБ больше оперативной памяти на 600 МБ). Но есть серьезный недостаток - когда у вас нет оперативной памяти, происходит сбой программ.

Сколько оперативной памяти вы можете выделить на 8 ГБ Windows 8 x64, прежде чем вы получите предупреждение о нехватке памяти? Можно ли настроить порог предупреждения?

Редактировать: я не могу ответить на это сам, так как он был закрыт из-за спора ради спора. Однако я ответил на это здесь: Каково пороговое значение "предупреждения о нехватке памяти" в 16 ГБ x64 окнах?

Короче говоря, да, Windows 8.1 x64 будет вести себя так же, как и Windows 7 x64. Если у вас низкий предел фиксации - зарядите коммит, достаточно большой процент оперативной памяти по-прежнему остается доступным, если это вообще возможно. Это делается путем перемещения большего количества вещей в файл подкачки.

Каково пороговое значение для предупреждения о нехватке памяти в 16 ГБ x64 окнах?

2 ответа2

13

Такое поведение присуще современному управлению памятью. Это будет происходить практически во всех современных операционных системах с виртуальной памятью, если объем доступного резервного хранилища (файл подкачки или пространство подкачки) недостаточен относительно объема физической памяти.

Если вы посмотрите на современные приложения в системе Windows, то увидите, что их рабочий набор (используемая ими физическая память) будет немного меньше размера их фиксации (виртуальная память, которую операционная система пообещала им).

Например, на моем настольном компьютере с Windows браузер, который я использую для ввода этого ответа, использует 207 МБ ОЗУ, но операционная система уже пообещала ему 280 МБ виртуальной памяти. Это означает, что в любой момент браузер может использовать 280 МБ виртуальной памяти без необходимости запрашивать разрешение у операционной системы, просто получая доступ к отображениям, которые у него уже есть. Операционная система либо должна обеспечить процесс этой памятью, либо должна принудительно завершить ее, не выполнив уже взятые обязательства.

При отсутствии резервного хранилища, только с физической ОЗУ, для этого приложения необходимо было бы зарезервировать 73 МБ дополнительной ОЗУ. Несмотря на то, что браузер использует только 207 МБ ОЗУ, он может увеличить объем до 280 МБ, просто используя уже выделенную память, которую операционная система еще не выделила ему (просто зарезервировала).

Если операционная система имеет достаточное резервное хранилище для всех своих обязательств, то она может продолжать выполнять обязательства. Но это не так, это вынуждено сделать неприятный выбор. Он может сказать приложениям, что он не может брать на себя больше обязательств, даже если есть много свободной оперативной памяти. Либо он может предоставлять обязательства приложений, но затем вынужден принудительно завершать приложения, когда они используют ресурсы, которые уже выделены.

Решение простое, настроить достаточное резервное копирование магазина. Раньше это не было проблемой. У всех были гигантские диски с сотнями гигабайт. Поэтому добавление резервного хранилища, равного вашей физической памяти, не было проблемой. Однако в последнее время машины с небольшими твердотельными накопителями становятся обычным явлением. Так что это снова становится проблемой.

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

6

Из пределов памяти для выпусков Windows:

1
2
3

4
(См. Полную таблицу для получения дополнительной информации об ограничениях виртуального адресного пространства в режиме пользователя и в режиме ядра и т.д.)

Этот бит, выделенный красным цветом, вероятно, является источником того, что вы получили предельный уровень 25%. Да, только ~ 3 ГБ ОЗУ из 4 ГБ доступно для 32-разрядных процессов в 32-разрядных версиях Windows, и это волшебным образом не изменилось в Windows 8. Что касается того, почему это так, я не собираюсь повторять все статьи в Интернете, которые уже объясняли это подробно, в том числе « Чувак Джеффа Этвуда» , «Где мои 4 гигабайта оперативной памяти»?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .