Я отключил файл подкачки в моей системе (жесткий диск слишком медленный, не могу сразу купить новый, не могу переместить файл подкачки в другой раздел). Когда я смотрю в Resource Monitor, используя приложения, требующие памяти, система показывает, что фиксация заряда почти на 100% заполнена. Действительно, если я продолжаю требовать больше памяти, программы начинают аварийно завершать работу, поскольку эффективный заряд достигает 100%.
Между тем, система говорит, что я использую только 50-60% физической памяти и у меня доступно около 1 ГБ памяти (бесплатно + режим ожидания).
Если для фиксации фактически запрашивается общий объем памяти, почему система говорит, что столько памяти свободно? Windows не использует физическую память? График памяти неправильный? Я что-то пропустил?
источник
Ответы:
Превышение лимита фиксации, когда у вас все еще много доступной оперативной памяти, не является чем-то необычным. Ни предел фиксации, ни комиссия за фиксацию напрямую не связаны с свободной или доступной оперативной памятью.
Лимит фиксации = текущий размер файла подкачки + размер оперативной памяти.
Поскольку у вас нет файла подкачки, ограничение на коммит будет меньше, чем если бы у вас был файл подкачки. Неважно, сколько оперативной памяти свободно . Для лимита фиксации имеет значение только количество установленной оперативной памяти . Вы можете исчерпать лимит коммитов, даже если 90% вашей оперативной памяти свободно или доступно.
Фиксация заряда - это количество виртуальной памяти, а не физической. Предположим, что моя программа запрашивает выделенные 2 ГБ, но затем она получает доступ только к 0,5 ГБ. Оставшиеся 1,5 ГБ никогда не сбиваются, никогда не выделяются в ОЗУ, поэтому использование ОЗУ не отражает 2 ГБ, только 0,5 ГБ.
Тем не менее, «системная фиксация» увеличивается на 2 ГБ, потому что система «зафиксировала», что БУДЕТ место для хранения моих 2 ГБ, если мне это действительно понадобится. Тот факт, что при любом запуске программы я не обязательно буду пытаться использовать все это, не помогает. Я попросил 2 ГБ, и успешное возвращение с этого звонка говорит мне, что ОС «зафиксировала» - то есть пообещала - что я смогу использовать такое большое виртуальное адресное пространство. ОС не может дать такое обещание, если не найдется место, где можно все это сохранить.
Итак: верните свой файл подкачки обратно, добавьте больше оперативной памяти или запустите меньше материала за один раз. Или какая-то комбинация из трех. Это ваши единственные возможности избежать ошибок "недостаточно памяти" и "недостаточно памяти".
Смотрите также мои ответы здесь (дольше) и здесь (намного дольше).
источник
Как показано в тесте на распределение памяти в статье по адресу http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ , Windows - это тип системы, которая не справляется с большим выделением памяти если такое распределение, вместе со всеми предыдущими распределениями (концепция, которую Microsoft называет «commit»), приведет к тому, что общий «commit» превысит сумму как физической памяти, так и суммы всех файлов подкачки (swap).
Учтите, что выделение само по себе не использует никакой фактической памяти (ни физической, ни подкачки) до чтения или записи в виртуальном адресном пространстве процесса для вышеупомянутого выделения. Например, выделение 2 ГБ само по себе будет влиять только на числа «Фиксация» (в Windows 7 talk), оставляя «Физическую память» в покое (пока не произойдет чтение / запись в пределах указанного выделения).
Что касается проектирования ОС, альтернативный подход состоит в том, чтобы всегда разрешать выделение любого размера (если доступная память уже полностью не исчерпана), а затем разрешать приложениям отказывать при чтении / записи. См. Https://cs.stackexchange.com/questions/42877/when-theres-no-memory-should-malloc-or-read-write-fail для получения дополнительной информации.
источник
Доступная память - это не то, что вы думаете. Это не лишний случай - это файловый кеш недавно завершенных процессов или процессов, которые были вынуждены отдать часть памяти другим процессам. Они могут быть отозваны туда с первоначальной целью. смотрите для более подробной информации.
http://support.microsoft.com/kb/312628
Что касается отсутствия файла подкачки, это очень плохо. Винда деградирует плохо без таковой. Помните, что даже исполняемые файлы используются в качестве файлов подкачки, когда нет файла подкачки. Даже если диск работает медленно, лучше иметь файл подкачки, пока вы не получите до 8-16 гигабайт памяти. Некоторые люди думают, что даже Windows 7 может работать без него.
Я регулярно даю старую машину, делая несколько вещей. Очистите жесткий диск как можно больше. Скопируйте все, что вы можете временно удалить с диска, в резервную копию. Удалите приложения, которые вам не нужны. Удалить приложения можно переустановить.
Когда все это будет сделано, дефрагментируйте ваш жесткий диск. В этот момент воссоздайте свой файл подкачки. Это будет ближе к передней части диска, насколько это возможно. Создайте фиксированный размер примерно в 1,5 раза памяти. Это мое правило, обычно я видел размеры от 1 до 3 времен памяти. Это даст ему небольшой прирост скорости по сравнению с обычными местами, где он будет размещен.
Я использую auslogic defrager, это бесплатно (хотя объявления для большего количества инструментов). Есть и другие, которые делают это тоже. Проверьте дефрагментаторы на portableapps.com. Он оптимизирует диск, помещая недавно использованные файлы рядом с передней частью диска для более быстрого доступа. Он показывает, где размещен файл подкачки, чтобы вы могли видеть, переместили ли вы его на верхние 25% диска.
После этого переустановите приложения и скопируйте обратно свои данные.
Я бы сказал, что вы получите повышение на 10 или 20%. Но главная ценность в том, что многие колебания уходят для более плавного опыта.
источник