Как сделать Windows 7 менее агрессивной в кешировании памяти?

16

Недавно я заметил, что Windows 7 на моей машине жалуется на нехватку памяти и что мне нужно закрыть некоторые программы. Затем он обычно указывает на программу, которую я запускаю, которая имеет утечку памяти и стала довольно большой. Однако обычно эти программы запускаются с использованием 20 МБ ОЗУ, и только после запуска программы от 12 до 24 часов они увеличиваются до не более 200 МБ использования ОЗУ. У меня никогда не было запущено более трех таких программ одновременно, поэтому максимальное использование ОЗУ 600 МБ я никогда не видел по запущенным программам.

Я использую Windows 7 x64 на компьютере с 4 ГБ оперативной памяти. Сначала я действительно забыл об этом и просто перезапускал программы, когда Windows жаловалась, но теперь, когда я вспомнил, тот факт, что Windows жалуется на то, что я использую 600 МБ ОЗУ (менее 2 ГБ, даже если вы используете память, используемую самой ОС), показался странным , Поэтому я поднял окно системных процессов, чтобы посмотреть на общее использование памяти из моих процессов и системных процессов, которые были перечислены. Он составил чуть более 700 МБ, поэтому я все еще был в замешательстве. Затем я подошел к монитору ресурсов и открыл вкладку «Память». Там я думаю, что нашел свой ответ. Он отметил, что на самом деле я использовал только 33% своей оперативной памяти. Однако на панели выделения ресурсов физической памяти раздел «Модифицированный» занимал до 2,3 ГБ, раздел «Резервный» - до 540 МБ, раздел «Свободный» - менее 20 МБ, а «Кэшированная память» - 2. 8 ГБ и доступная память были перечислены в 550 МБ. (Эти значения слегка округлены, конечно, поскольку ваши постоянно меняются, когда я пишу это.)

Так что, видимо, Windows 7 использует больше памяти, чем я. В какой-то момент в прошлом я вносил некоторые изменения в установленное меню служб Windows, но это было только для отключения определенных служб хостинга, поскольку я не хотел делать общий доступ к мультимедиа, включать клиент Telnet и удалять Интернет. Исследователь, но это может быть моя вина. Есть ли способ заставить Windows не делать этого или, по крайней мере, кешировать намного менее агрессивно, поэтому я перестаю получать уведомления «Недостаточно памяти»?

Г.Р.Г.-н-Сох
источник
2
ОП неправильно понимает проблему. Ему не хватает резервной виртуальной памяти. Весь его анализ физической памяти не имеет значения. У вас может быть много свободной физической памяти, но недостаточно свободной виртуальной памяти с резервной копией, и предупреждение о всплывающей памяти является предупреждением о нехватке резервной виртуальной памяти, а не физической памяти. (Хотя утечка физической памяти у водителя может косвенно вызвать проблему.)
Дэвид Шварц
«ОП неправильно понимает проблему». Как и некоторые из ответчиков. :(
Джейми Ханрахан

Ответы:

10

Резервная память не является проблемой, она считается «свободной» и будет перераспределена по запросу - она ​​просто содержит память, недавно использованную программами, но теперь освобожденную. Если другая программа запрашивает больше памяти, чем «Свободно», система должна выделять из набора Standby без проблем (так как «резервная» память в настоящий момент не используется).

Ваша чрезмерная Модифицированная память - ваша проблема, потому что она не может быть легко перераспределена. Смотрите здесь . Это может быть вызвано либо утечкой памяти (которая соответствует вашему первому абзацу - какие программы просочились?), Либо слишком маленьким размером файла подкачки (размер файла подкачки фиксированный или деактивирован?).

DMA57361
источник
3
Как я отмечал в своем комментарии к ответу CJM, я закрыл все свои приложения, которые были сомнительными (некоторые игры для ПК-инди), и в настоящее время у меня запущены только диспетчер задач, монитор ресурсов, AVG и Chrome, но по-прежнему имеется 1,6 ГБ модифицированной памяти. Я оставляю свой компьютер включенным на несколько дней, что соответствует профилю в статье, на которую вы ссылаетесь. Однако на этой веб-странице было указано, что нужно искать процесс с большим размером фиксации. В настоящее время это процесс из nSvcAppFlt.exe. Размер рабочего набора составляет всего 30 МБ, а размер коммита - 13,5 ГБ. Что дает?
grg-n-sox
2
Это программа, которая утечка вашей памяти. Также см. Social.answers.microsoft.com/Forums/en-US/w7performance/thread/… . Убери это и все должно быть хорошо.
2010 г.,
Большое спасибо. На самом деле это изящно. Таким образом, в основном, если я замечаю, что моя оперативная память израсходована, я могу просто перейти к своему монитору ресурсов, посмотреть, огромен ли раздел «Модифицированная память», и посмотреть, какой процесс имеет большой размер фиксации, и я обнаружил, что моя программа утечки памяти? Определенно хороший диагностический инструмент для Windows.
grg-n-sox
Отключите или обновите программное обеспечение брандмауэра Nvidia.
Дэвид Шварц
У вас есть три «вы», которые должны быть «вашими» в последнем абзаце. (не могу предложить редактировать, слишком незначительный.)
Shadow The Burning Wizard
4

Превентивное кэширование SuperFetch - это не ваша проблема. Windows 7 будет использовать как можно больше резервной памяти для предварительного кэширования того, что, по ее мнению, вам понадобится в дальнейшем. Если все получится правильно, это сэкономит вам немного времени, и ваши приложения появятся быстрее и быстрее.

Если он угадает неправильно и вам нужны другие данные, Superfetch освободит часть памяти, которая у вас есть, чтобы вы могли загрузить данные, которые вам действительно нужны. Смотрите: http://arstechnica.com/microsoft/news/2010/02/behind-the-windows-7-memory-usage-scaremongering.ars

Если вы испытываете проблемы с нехваткой памяти, это не произойдет из-за SuperFetch - так как он освободит столько памяти, сколько потребуется, если приложения потребуют этого. Доступная память (550 МБ) - это то, что используется SuperFetch, поэтому очевидно, что у вас еще не исчерпано памяти. Даже если вы израсходуете всю свою оперативную память, ваша машина переключится на виртуальную память, хотя вы захотите избежать этого из-за снижения производительности ...

Таким образом, это говорит о том, что у вас проблемы с нехваткой памяти из-за проблем в другом месте - возможно, одно из ваших утечек приложений потребляет (и не отказывается) от других типов ресурсов ...

В любом случае, решение, скорее всего, будет найдено путем решения проблем с вашими ошибочными приложениями, чем при работе с SuperFetch ...

CJM
источник
Я понимаю, что резервный раздел памяти является частью кэшированной памяти, но я серьезно сомневаюсь, что проблема заключается в моих программах. Я просто закрыл их все сейчас, так что все, что я запускаю, это AVG, диспетчер задач, монитор ресурсов и одно окно Chrome с 4 вкладками. Только 1042 МБ используется с 1417 МБ доступной памяти, но у меня все еще есть тот огромный кусок Модифицированной памяти, занимающий 1633 МБ, который диспетчер задач считает как использованную память и дает мне уведомления о нехватке памяти. Есть ли способ уменьшить количество модифицированной памяти или просто отключить уведомление о нехватке памяти?
grg-n-sox
0

Поскольку вы не думаете, что проблема вызвана программой с утечкой памяти, альтернативой может быть увеличение размера файла подкачки.

Хотя файл подкачки не является вашей основной памятью, он позволит операционной системе перенести больше данных на жесткий диск и, надеюсь, остановить сообщение «недостаточно памяти». Единственным другим вариантом было бы удалить программу, связанную с процессом, имеющим огромный отпечаток 13 ГБ, хотя я понятия не имею, какая программа понадобится для распечатки такого большого объема памяти, если только это не была какая-нибудь высококачественная компьютерная игра или программное обеспечение для 3D-рендеринга.

Бриттон
источник
0

Исходя из моего опыта, ползучесть в режиме ожидания является реальной проблемой. Например, если я запустил Snagit в режиме «скользящих окон» для длинной статьи, будут фрагменты статьи, которые не были захвачены при работе только в резервной памяти. В любом случае, я обнаружил, что мой компьютер работает медленно в режиме ожидания.

Для решения проблемы я использую оптимизатор памяти из бесплатных утилит Glary. Мой компьютер имеет 6 ГБ памяти. При первой загрузке у меня около 2 ГБ оперативной памяти, 2 ГБ в режиме ожидания и 2 ГБ из того, что я называю «Свободная свободная память» в соответствии с монитором ресурсов Windows. Примерно через полдня вся моя свободная свободная память превратится в резервную, независимо от того, использую я компьютер или нет. Теперь у меня запущен оптимизатор памяти Glary Utilities с Windows, и я могу поддерживать мой компьютер на неопределенный срок, имея 2 ГБ свободной свободной памяти.

Каждый раз, когда я сажусь на другой сеанс, я сначала дважды щелкаю по значку на панели задач оптимизатора памяти и выполняю оптимизацию; прося освободить мою оригинальную память 2 ГБ Free-Free. Я могу попросить больше, но это максимум, который он освободит независимо. Для завершения работы оптимизатора требуется около 30 секунд, что намного меньше, чем требуется для перезагрузки. У него есть режим автооптимизации, но я не смог понять, как заставить его работать.

Джеймс Хорнер
источник
Резервная память не проблема.
Джейми Ханрахан
«Оптимизатор памяти» должен быть списан. Резервное ОЗУ - это ОЗУ, которое недавно «использовалось» в процессах. Он был вытеснен из этих процессов из-за замены рабочего набора, но он все еще содержит то, что он делал, когда он был «в использовании». Если процессу требуется то, что находится на одной из этих страниц, страница может быть быстро возвращена процессу. Вот почему Standby считается частью подсчета «Кеша». Но Standby также доступен для других целей, как и Free RAM. Ваш «оптимизатор памяти» только что переместил кучу страниц из режима ожидания в свободный, то есть вы сбили кэш-память режима ожидания [...]
Джейми Ханрахан
[...] без дополнительной оперативной памяти. Так как «Standby» всегда был «доступен» в любом случае! В Vista и более поздних версиях Superfetch теперь может использовать часть Standby для упреждающего кэширования файлов, но страницы по- прежнему можно использовать для других процессов по мере необходимости. Так что SuperFetch также не убирает ни одной страницы из «Доступного». Избавьтесь от «диспетчера памяти», это ухудшает производительность вашей системы, вызывая ненужные дисковые операции ввода-вывода.
Джейми Ханрахан
-1

Чтобы решить эту проблему

Перейдите к start-run-msconfig, затем выполните обслуживание и уберите галочку из «Основы драйвера Windows». нажмите кнопку ОК и перезагрузите машину.

Помните - только вышеупомянутые шаги решат эту проблему. Если вы отключили файл services.msc, он все еще активен во время загрузки ОС и заблокирует вашу память.

Для проверки используйте инструмент

user261975
источник
Отключение службы WDF отключит все устройства, которые зависят от этой модели драйвера. Это плохая идея.
Джейми Ханрахан