Windows позволяет программам запрашивать выделение памяти (виртуальное адресное пространство), даже если они не планируют ничего делать с памятью. Это позволяет программе использовать память на более позднем этапе, и им не нужно тратить дополнительное время в течение критически важной для кода части кода, чтобы проверить ее доступность для использования.
Windows не будет перегружать память, так что у вас есть 10 МБ ОЗУ, и одна программа запрашивает 5 МБ (но использует только 2 МБ), а вторая программа запрашивает 6 МБ. Windows отклонит запрос на 2-ю программу, потому что не может гарантировать, что обе программы захотят использовать свои полные выделения, чтобы память была им доступна.
Если бы он позволял делать запросы на выделение без достаточного количества доступного места, вам нужно было бы либо аварийно завершить работу программы, которая пытается записать в память, в которой нет места, либо принудительно прервать другую программу, чтобы освободить место. (Linux допускает чрезмерную загрузку памяти, если вы хотите разрешить ее через, /proc/sys/vm/overcommit_memory
и следует подходу « принудительно завершить другую программу », когда он встречает запись в память, которую он не может выполнить)
Когда у вас есть файл подкачки, и программа запрашивает 5 МБ (но использует только 2 МБ), она помещает те 2 МБ памяти, которые она фактически использует, в оперативную память, а остальные 3 МБ выделяются в файле подкачки. Потому что это просто «распределение» и ничего из него не было записано или прочитано, но ввод-вывод не выполнялся, и скорость привода не имеет значения. Теперь, когда приходит вторая программа и запрашивает 6 МБ, остается достаточно места для выполнения запроса.
Теперь о вашей ситуации. Прежде всего, когда вы проверяете, сколько оперативной памяти используется, вы проверяете «Рабочий набор» или «Фиксированный размер». «Рабочий набор», то есть «использует только 2 МБ», который мы видели в предыдущем примере, «Фиксированный размер» будет тем «5 МБ», который вы запрашивали выше.
Если у вас нет файла подкачки, ваша общая сумма «Размер коммита» должна быть меньше, чем общая оперативная память в системе, для систем с файлами подкачки ваша общая сумма «Размер фиксации» может быть равна общей оперативной памяти в вашей системе + размер файла подкачки.
Я не знаю, когда вы пошли проверять доступную оперативную память, если диспетчер задач отображает итоговое значение «Рабочий набор» или оно изменится на итоговое значение «Фиксированный размер», если у вас нет файла подкачки, вы можете быть гораздо ближе к вашему пределу, чем вы думаете.
32-разрядная программа может выделить до 2 ГБ виртуального адресного пространства, а 64-разрядная программа может выделить до 7 ТБ для себя . Таким образом, любые программы, которые вы открываете, могут быстро занимать очень большие куски адресного пространства, поскольку окна спроектированы и настроены в течение многих лет для работы с файлом подкачки. Я думаю, что предупреждаю пользователя, когда вы достигли 66% от общего количества. емкость очень разумная.
Я знаю, что многие люди предполагают, что они получат более высокую производительность без файла подкачки, и это было верно еще в эпоху Windows 98, но многое изменилось, и теперь управление памятью стало намного лучше. В своем вопросе вы утверждаете, что отключили файл подкачки из-за большого использования диска, как вы измерили использование диска и как вы узнали, что он переходит на файл подкачки? Если вы получаете очень большое количество IO, когда у вас все еще есть много свободного барана, это может быть индикатором другой проблемы, которую мы можем помочь решить.