Як зробити 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
ОП неправильно розуміє проблему. Йому не вистачає резервної віртуальної пам'яті. Весь його аналіз щодо фізичної пам’яті не має значення. У вас може бути багато вільної фізичної пам’яті, але недостатньо вільної резервної віртуальної пам’яті, а попередження спливаючої пам’яті - це попередження про дефіцит резервної резервної віртуальної пам’яті, а не фізичної пам’яті. (Хоча витік фізичної пам’яті з водія може викликати проблему опосередковано.)
David Schwartz

"ОП неправильно розуміє проблему." Як і кілька відповідей. :(
Джеймі Ханрахан

Відповіді:


10

Пам'ять у режимі очікування не є проблемою, вона вважається "вільною" і буде перерозподілена за запитом - вона просто містить пам'ять, нещодавно використану програмами, але тепер звільнена. Якщо інша програма вимагає більше пам'яті, ніж "Безкоштовно", система повинна виділяти з режиму очікування безперешкодно (оскільки "резервна" пам'ять наразі не використовується).

Ваша проблема має надмірну змінену пам'ять, оскільки її неможливо легко перерозподілити. Дивіться тут . Це може бути спричинене або витоком пам’яті (яка, здається, відповідає вашому першому абзацу - які програми протікають?), Або файлом сторінки занадто мало (чи файл вашого сторінки встановлений чи деактивований?).


3
Як я зазначив у своєму коментарі до відповіді CJM, я закрив усі мої додатки, які були сумнівними (деякі інді-ПК), і тепер працює лише диспетчер завдань, монітор ресурсів, AVG та Chrome, але все ще мають 1,6 ГБ зміненої пам'яті. Я залишаю комп’ютер увімкненим цілими днями, що відповідає профілю в статті, яку ви пов’язали. Однак примітка на цій веб-сторінці повинна була шукати процес із великим розміром комісії. В даний час це процес з nSvcAppFlt.exe. Він має лише робочий набір розміром 30 Мб, але розмір комісії 13,5 Гб. Що дає?
grg-n-sox

2
Це програма, яка просочує вашу пам’ять. Також дивіться social.answers.microsoft.com/Forums/en-US/w7performance/thread/… . Зніміть його і все повинно бути добре.
акід

Велике спасибі. Насправді це чудовий вид. Отже, якщо я помічаю, що моя оперативна пам'ять є з'їденою, я можу просто зайти до монітора ресурсів, побачити, чи велика частина модифікованої пам’яті, і побачити, який процес має великий розмір фіксації, і я вважаю, що в моїй програмі протікає пам'ять? Безумовно, приємний діагностичний інструмент для 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 ...


Я розумію, що роздільна пам'ять в режимі очікування є частиною кешованої пам’яті, але я серйозно мушу сумніватися в проблемі моїх програм. Я просто закрив їх зараз, тому все, що у мене працює, - це AVG, диспетчер завдань, монітор ресурсів та одне вікно Chrome із 4 вкладками. Тільки 1042 МБ використовується з 1417 МБ доступної пам'яті, але у мене все ще є величезний фрагмент Зміненої пам'яті, який займає 1633 МБ, який диспетчер завдань зараховує до використаної пам'яті і дає мені повідомлення про низьку пам'ять. Чи є спосіб зменшити кількість модифікованої пам'яті або просто вимкнути повідомлення про низьку пам'ять?
grg-n-sox

0

Оскільки ви не вважаєте, що проблему викликає програма з витоком пам’яті, альтернативою може бути збільшення розміру файлу сторінки.

Хоча файл сторінки не є вашою основною пам’яттю, це дозволить операційній системі поміняти більше даних на жорсткий диск, і, сподіваємось, зупинить повідомлення «поза пам'яттю». Єдиним іншим варіантом було б видалити програму, пов’язану з процесом, який має величезний 13-футовий друкарський фут, хоча я не маю уявлення, яку програму потрібно було б надати стільки пам’яті, якщо тільки це не була якась комп’ютерна гра чи програмне забезпечення 3D-рендерінгу.


0

З мого досвіду повзання пам'яті в режимі очікування - справжня проблема. Наприклад, якщо я запускаю Snagit в режимі прокатки Windows для тривалої статті, там будуть частини статті, які не були захоплені під час роботи тільки в режимі очікування. У будь-якому випадку я вважаю, що мій комп'ютер працює в режимі очікування мляво.

Для вирішення проблеми я використовую оптимізатор пам'яті з безкоштовних утиліт Glary. Мій комп'ютер має 6 GIG пам'яті. Коли я вперше завантажуюся, у мене є близько 2 GIG пам'яті, яка використовується, 2 GIG режиму очікування та 2 GIG того, що я називаю Безкоштовною пам'яттю відповідно до монітора ресурсів Windows. Протягом півдня або близько того вся моя вільна пам'ять перетвориться в режим очікування, незалежно від того, користуюся я комп'ютером чи ні. Тепер у мене запущений оптимізатор пам’яті Glary Utilities з Windows, і я можу підтримувати роботу мого комп’ютера на невизначений час, маючи повний 2 GIG пам'яті безкоштовно.

Кожен раз, коли я сідаю на інший сеанс, я спершу двічі клацнув значок лотка оптимізатора пам'яті та роблю оптимізацію; з проханням звільнити мої оригінальні 2 GIG пам'яті Free-Free. Я можу попросити більше, але це максимум, який він звільнить незалежно. Оптимізатору потрібно близько 30 секунд, що значно менше, ніж потрібно для перезавантаження. Він має режим автоматичної оптимізації, але я не зміг зрозуміти, як змусити його працювати.


Пам'ять у режимі очікування - це не проблема.
Джеймі Ханрахан

"Оптимізатор пам'яті" повинен бути знятий. Оперативна пам’ять в режимі очікування - це оперативна пам’ять, яка нещодавно «використовувалася» в процесах. Він був витіснений з цих процесів завдяки заміні робочого набору, але він все ще містить те, що він робив, коли він був "у користуванні". Якщо процесу потрібне те, що знаходиться на одній із цих сторінок, сторінку можна швидко повернути до процесу. Ось чому режим очікування вважається частиною підрахунку "Кешу". Але режим очікування також такий же, як "Доступний" для інших цілей використання, як і безкоштовна оперативна пам'ять. Ваш "оптимізатор пам'яті" просто перемістив купу сторінок із режиму очікування у вільний, тобто ви збили кеш-пам'ять в режимі очікування [...]
Джеймі Ханрахан

[...] без надання більше доступної оперативної пам’яті. Оскільки в режимі очікування все одно було "Доступно"! З Vista та пізнішими версіями Superfetch тепер може використовувати частину режиму очікування для проактивного кешування файлів, але сторінки все ще можливо замінити для використання іншими програмами за потреби. Тож SuperFetch не знімає жодної сторінки від "Доступної". Позбудьтеся "менеджера пам'яті", це шкодить продуктивності вашої системи, спричиняючи непотрібні введення / виведення диска.
Джеймі Ханрахан

-1

Щоб вирішити цю проблему

Перейдіть до запуску-msconfig, потім сервіси та видаліть галочку з "Фундації драйверів Windows". натисніть кнопку ОК та перезавантажте машину.

Пам'ятайте - лише вищезазначені кроки вирішать цю проблему. Якщо ви відключили сервіс.msc, він залишається активним під час завантаження ОС, і він заблокує вашу пам'ять.

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


Якщо вимкнути службу WDF, вимкніть будь-які пристрої, які залежать від цієї моделі драйверів. Це погана ідея.
Джеймі Ханрахан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.