Чому загальне використання пам’яті, про яке повідомляє диспетчер задач Windows, набагато вище, ніж сума пам'яті всіх процесів? [дублікат]


98

Диспетчер завдань показує моє загальне використання пам'яті в 90% від моєї загальної 6 ГБ, але жоден процес не використовує більше 250 МБ оперативної пам’яті, а сума використання оперативної пам’яті всіх запущених процесів становить менше 2 ГБ. Я спробував:

  • Подивившись на номери в стовпці «Пам'ять» на вкладці «Процеси» Windows 8 диспетчера завдань.
  • Переглядаючи стовпці "Робочий набір", "Приватний робочий набір", "Спільний робочий набір" та "Розмір фіксації" на вкладці "Деталі" менеджера завдань.
  • Переглядаючи подібні стовпці, пов’язані з пам’яттю, у Process Explorer.
  • Я спробував запустити RAMMap Sysinternals, але, хоча у мене криза з низькою пам’яттю, він виходить з ладу при запуску. Як тільки я вирішую проблему, RAMMap працює нормально, але в цей момент вже пізно.

Усі показують досить невеликий об'єм пам'яті, що використовується.

Є багато людей, які задають варіанти цього питання з різними версіями вікон по всьому Інтернету. Деяким з них вдається вирішити свої проблеми з низькою пам’яттю, часто шляхом перевстановлення програмного забезпечення; іноді заново встановлюючи вікна з нуля. Я шукаю відповіді на загальні запитання, на які всі вони поділяються, і на які ніколи не отримують відповіді в іншому місці:

  1. Чому загальна використана пам'ять набагато вище, ніж пам'ять, що використовується у всіх перерахованих процесах, як би я не намагався їх порахувати?
  2. Як Windows може "знати", що використовується пам'ять, не знаючи, яка програма її використовує?
  3. Які процеси, можливо, можуть використовувати пам'ять, але не відображатись у списку?
  4. Чи є там програмне забезпечення, яке може дати більше інформації про використану пам'ять?

Деталі, характерні для моєї власної проблеми: Після оновлення до Windows 8.1 проблема виникає, як тільки я входжу в систему. У мене закінчується пам'ять, як тільки я запускаю будь-яку програму. Я помітив у Process Explorer, що запущено кілька екземплярів iexplore.exe, мабуть, запускається автоматично. Один конкретний екземпляр використовував лише кілька МБ оперативної пам’яті, але показав сотні мільйонів помилок сторінки. На примху я вбив той конкретний процес, і використання пам'яті одразу впало на 70%.

Ведучий до одного конкретного питання:

  • Як можна було вбити один процес, який нібито використовував лише кілька МБ, звільнивши кілька ГБ?

І бонусне питання (імовірно важкий):

  • Окрім повторної інсталяції Windows, як я можу уникнути необхідності переглядати це при кожному перезавантаженні комп'ютера?

3
також пам'ять ядра зараховується до використання. Зображення RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/…
magicandre1981

2
Я думаю, що питання має бути назване "Чому у мене не вистачає пам'яті".
surfasb

На це питання неможливо відповісти без конкретики. Перерахуйте встановлені програми. Або ще краще - дамп запущених процесів від Performance Monitor.
surfasb

1
Ви фактично вимикаєте / перезавантажуєте комп'ютер повністю або використовуєте гібридне вимкнення (за замовчуванням у Windows 8)? Після переходу на Windows 8 у мене була подібна проблема. Я припускаю, що один драйвер забирав все більше моєї фізичної оперативної пам’яті і не повертав її, навіть після вимкнення та включення комп'ютера. За кілька тижнів вона накопичилася до кількох гігабайт. Тому зараз кожні кілька днів я натискаю кнопку «перезапустити» або утримую зсув, натискаючи «вимкнути», щоб фактично вимкнути ПК.
Роберт

2
У моєму випадку це була пам'ять «Водій заблокована», зарезервована Hyper-V через те, що вона включила «Динамічну пам’ять». Мені довелося зупинити всі VM, відключити налаштування та перезапустити їх. Дякуємо за пропозицію RAMMap.
Дагельф

Відповіді:


7

До речі, слід намагатися не використовувати термін «пам’ять». Це створює багато плутанини. Якщо ви маєте на увазі фізичну пам'ять, скажіть "фізична пам'ять" або "ОЗУ". Якщо ви маєте на увазі віртуальну пам'ять, скажіть так. Якщо ви маєте на увазі підтримку магазину, скажіть так.

Чому загальна використана пам'ять набагато вище, ніж пам'ять, що використовується у всіх перерахованих процесах, як би я не намагався їх порахувати?

Тому що операційна система не витрачає фізичну пам'ять (RAM), якщо вона не має вибору.

Як Windows може "знати", що використовується пам'ять, не знаючи, яка програма її використовує?

Тому що жодна програма не використовує його. Розглянемо, наприклад, пам'ять, що містить код програми, щойно закінчилася. Жодна програма не використовує його. Але ця пам'ять використовується, оскільки вона не безкоштовна і містить дані, які можуть бути корисними (якщо програма запуститься знову).

Які процеси, можливо, можуть використовувати пам'ять, але тепер відображаються у списку?

Це не використовується процесами.

Чи є там програмне забезпечення, яке може дати більше інформації про використану пам'ять?

RAMMap може це зробити.

Є лише дві можливості: оперативну пам’ять можна використовувати або її марнувати. Очевидно, що перший краще. Будь-яка вільна пам'ять назавжди втрачена - 4 Гб машина не може використовувати 2 ГБ сьогодні, щоб завтра використовувати 6 ГБ. Якщо ви думаєте, що "я хочу його безкоштовно зараз, щоб я міг його використовувати пізніше", забудьте про це. Ви можете використовувати його зараз і використовувати пізніше.

Як можна було вбити один процес, який нібито використовував лише кілька МБ, звільнивши кілька ГБ?

Ви закінчуєтеся в резервному магазині, а не у фізичній пам'яті. У вас достатньо вільної фізичної пам’яті, але недостатньо сховища резервної копії для ОС, щоб продовжувати виділяти віртуальну пам’ять, яка може потребувати резервного копіювання.

Процес використовував лише кілька Мб фізичної пам'яті, але ОС, можливо, довелося б резервувати для цього кілька ГБ резервної віртуальної пам'яті. Наприклад, припустимо, що процес створює записувану приватну карту пам'яті для файлу 2 Гб. ОС повинна резервувати 2 Гб резервної віртуальної пам’яті для процесу, оскільки вона може записувати в кожен байт цього зіставлення. Крім того, він ніколи не може писати жодному з них. Ось чому вам потрібен файл підказки великого розміру.

Сучасні операційні системи записують безліч чеків (перспективний резервний магазин), які ніколи не будуть повернуті (вимагають оперативної пам'яті). Ви не можете продовжувати писати чеки (багатообіцяючий магазин), навіть якщо у банку є багато грошей (безкоштовна оперативна пам’ять), якщо ви вже написали купу великих чеків, які можуть або не можуть отримати грошові кошти (обіцяно стільки резервного магазину як у вас є). Файли підкачки додають сховище, що дозволяє операційній системі зберігати чекові записи.


14
PS: Я використовую слово "пам'ять" не тому, що я не знаю різниці між оперативною пам'яттю та VM, а тому, що мій комп'ютер говорить лише мені, що це поза "пам'яті", не даючи мені ніякої інформації, що це насправді засоби. (Я припускаю, що це означає оперативну пам’ять, з причин, які я вказав у попередньому коментарі, але я не впевнений.) Я б краще скористався справжнім вокабом (який я можу шукати в разі потреби), ніж детальною фінансовою метафорою :)
Джош

91
-1 тому, що після прочитання відповіді та всіх коментарів досі не зрозуміло, чому загальна використана пам'ять набагато вище, ніж пам'ять, яка використовується у всіх перерахованих процесах.
Bennett McElwee

6
Ця термінологія, де "використовується" пам'ять, хоча жодна програма не використовує її, зовсім не схожа на звичайне значення слів типу "використано" та "безкоштовно" - можливо, це термінологія Microsoft, а не ваша. Так чи інакше, припустимо, наприклад, що 50% оперативної пам’яті зараз використовується запущеними програмами, а 25% не використовується жодною запущеною програмою, але містить дані, які можуть бути корисні в майбутньому, але також можуть бути відкинуті. Якщо скласти їх разом і відобразити "Пам'ять: 75%", корисна інформація не передає користувачеві. Я думаю, саме звідси походить широка плутанина.
Bennett McElwee

2
@BennettMcElwee Не існує хорошого способу зменшити використання пам'яті до одного простого числа, але користувачі наполягають на цьому. Це ставить розробників у незручне становище - вони можуть надати номер, який не завжди є корисним або не надає номер. Більшість розробників ОС та GUI вибирають перший варіант - вони надають номер, що призводить до великої плутанини. Якщо ваше запитання "чи більше оперативної пам'яті зробить роботу моєї системи кращою", відповідь - це дуже, дуже важко сказати, навіть експертам.
Девід Шварц

2
@DavidSchwartz Ваша відповідь не пояснює такого, він просто констатує це. Чи можете ви надати будь-які посилання для підтвердження конкретної претензії? Я інтерпретую "Фізична пам'ять XX%", щоб означати, що XX% фізично встановленої оперативної пам’яті зараз використовується і недоступна для інших процесів. Я вважаю, що я підтверджений тим, що понад 90% система стає схильною до блокування, і коли програми намагаються виділити пам'ять понад 100%, вони повністю виходять з ладу. На мій досвід, це не стандартний режим, де працює більшість систем.
Джон Нойхаус
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.