Пам'ять не звільняється після закриття всіх програм


0

Нещодавно я помітив, що ОС Windows займає 5 Гб під час запуску і під час роботи з іншими програмами досягає 8 Гб. Пам'ять (RAM) не вивільняється навіть після закриття всіх запущених програм.

enter image description here

У чому причина, і як я можу це виправити?


Чому запам'ятовується пам'ять? Це було б марнотратно. Набагато краще, якщо операційна система зберігає її в роботі (наприклад, з кешем старої програми, яку ви тільки що закрили). Поки він може звільнити його швидко, коли це необхідно, немає ніяких підстав звільняти його до того часу, і багато причин не робити цього.
— Hennes

Я не можу запускати інші програми
— Mirodil

Відповіді:


1

У вас є витік пам'яті, викликаний драйвером. Подивіться на високе значення пам'яті ядра не вивантажено (4,8 ГБ у вашому випадку). У вашому випадку це більше 1 Гб. Можна використовувати poolmon щоб побачити, який драйвер викликає високий рівень використання.

Встановіть Windows WDK , запустіть poolmon, сортуйте його за допомогою P після типу пулу так, щоб не вивантажувалися зверху і через B після байтів, щоб побачити тег, який використовує більшість пам'яті.

Тепер подивіться, який pooltag використовує більшість пам'яті, як показано тут:

enter image description here

Тепер відкрийте підказку cmd і запустіть команду findstr, щоб дізнатися, який драйвер використовує цей тег:

enter image description here

Тепер перейдіть до папки драйверів ( C:\Windows\System32\drivers ) і клацніть правою кнопкою миші відповідний драйвер ( intmsd.sys у наведеному вище прикладі зображення). Натисніть Властивості, перейдіть на вкладку відомостей, щоб знайти ім'я продукту. Шукайте оновлення для цього продукту.

Якщо пул-пул показує лише драйвери Windows або вказаний у списку пул-тег.txt ( "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt" ) Ви користуєтеся xperf для відстеження того, що викликає використання . Встановіть WPT з Windows SDK , відкрийте a cmd.exe як адміністратор і запустити це:

xperf -в програмі PROC_THREAD + LOADER + POOL -stackwalk   PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 2048   -MaxFile 1024 -Файл-код Циркуляр & amp; час очікування -1 & amp; xperf -d C: pool.etl

захоплення 30 -60с росту. Відкрийте ETL за допомогою WPA.exe, додайте графіки пулу до панелі аналізу.

Покладіть колонку pooltag на перше місце і додайте стовпець стека. Тепер завантажте символи всередині WPA.exe і розгортайте стек тега, який ви бачили в poolmon.

enter image description here

Тепер знайдіть інші драйвери третьої сторони, які можна побачити в стеку. Ось те Thre тег (Thread) використовується AVKCl.exe з G-Data. Знайдіть оновлення драйвера / програми, щоб виправити це.


Чи могли б ви пояснити другий варіант більш детально?
— Mirodil

Я зв'язав відео, яке показує всі кроки: channel9.msdn.com/Shows/Defrag-Tools/… котрий тег відображається як причина.
— magicandre1981

0

Викликається функція superfetch почав з Windows Vista, щоб дати всі додаткові барана щось робити. Програми, які ви часто використовуєте, кешуються, тому вони завантажуються швидше. Вихід диспетчера завдань / монітора ресурсів не завжди ідеальний, але він не повинен завдавати шкоди.


Я не можу запускати інші програми, тому що немає вільної пам'яті, наприклад VMware
— Mirodil

це не має нічого спільного з superfetch. Він має витік пам'яті водія
— magicandre1981
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.