Я не знаю, почему моя память показывает 65% использования, хотя я не запускаю никаких программ.

И иногда это застряло.

Технические характеристики моего ноутбука:

Acer Aspire VX 15
ОС: Windows 10 x64 последнее обновление
Оперативная память: 24 ГБ DDR4 2400
SSD: 512 ГБ
HDD: 1 ТБ
Процессор: Corei7 7-го поколения 7700HQ 2,8
Графика: GeForce GTX 1050Ti GDDR5

Скриншот процессов

Скриншот процессов

Скриншот спектакля

Скриншот RAMMap

Скриншот RAMMap

4 ответа4

1

tl; dr: Загрузите все 5 файлов из FindZombieHandles, запустите его и посмотрите, какой процесс создает всех этих зомби.


Вы были правы, заметив эту проблему. 1

Есть несколько общих причин:

  • Утечка ручки, особенно объектов GDI
  • Утечка ручки, приводящая к процессам зомби
  • Память заблокирована драйвером, что может быть связано с ошибкой драйвера или даже с нормальной работой (например, раздувание VMware намеренно "съест" вашу оперативную память, чтобы попытаться сбалансировать ее между виртуальными машинами)

Получение дополнительной информации

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

В вашем конкретном случае я возвращаюсь к предоставленному вами скриншоту. Вы хотите взглянуть на столбец Active - столбец Standby содержит кэши, попадающие в "доступную" память. Обратите внимание, что Page Table очень высока - я ожидаю, что она будет примерно 512 МБ, а не более 2 ГБ!

Сужение

Отсюда можно догадаться: это, вероятно, связано с зомби-процессами. Процесс зомби может происходить в Windows, когда один процесс запускает другой, который содержит дескриптор запущенного процесса. Когда запущенный процесс завершается, ожидается, что процесс запуска освободит эти дескрипторы. Когда этого не происходит, они остаются до тех пор, пока существует процесс запуска.

На самом деле мы можем получить дальнейшее подтверждение на вкладке Процессы RAMMap. Обратите внимание, что в вашем случае сортировка по имени процесса, тысячи экземпляров tasklist.exe и сотни экземпляров powershell.exe . Фактически, все, что там с использованием частной памяти 0 K является красным флагом процесса, который завершился, но все еще зомбируется.

Теперь вам нужно выяснить, какой процесс создает всех этих зомби. Есть несколько способов сделать это. Вы можете использовать диспетчер задач на вкладке Details и добавить столбец Handles. Любой процесс, содержащий большое количество зомби, также будет иметь слишком много открытых ручек. Вы также можете использовать Process Explorer, чтобы посмотреть, какие дескрипторы открыт для определенного процесса.

Однако, безусловно, самый простой способ - это использовать FindZombieHandles 2 (вам нужно загрузить все 5 файлов в один каталог). Если вы запустите этот инструмент (как администратор), он должен сказать вам, какой процесс создает и удерживает всех этих зомби. Оттуда вы можете завершить процесс, удалить приложение или сообщить об этом разработчику.


1 Как я объяснил в другом месте, на вкладке "Процессы" диспетчера задач отображается использование памяти, за исключением дисковых кешей, поэтому общее (Linux) объяснение "свободная оперативная память расточительна" обычно не применяется. Что касается диспетчера задач, дисковый кеш является частью доступной памяти. Не упоминается о "свободной" памяти.

2 Огромное спасибо Брюсу Доусону за этот инструмент.

1

Свободная память - это способность, которая тратится впустую. Система с 16 ГБ ОЗУ, которая сегодня использует только 8 ГБ, не может использовать 24 ГБ завтра. Вы не можете сохранить оперативную память на потом. Из-за этого современные операционные системы прилагают все усилия, чтобы поддерживать оперативную память, когда они могут тратить как можно меньше памяти.

Предположим, что ваша система должна была освободить больше ОЗУ, это означало бы, что сейчас необходимы некоторые усилия, чтобы освободить эту ОЗУ. Поскольку в вашей системе уже достаточно свободной оперативной памяти, эти усилия, скорее всего, не окупятся. Если система хочет использовать оперативную память, которую она освободила, она должна снова использовать ее, прилагая больше усилий, чтобы просто отменить работу, которую она сделала, чтобы освободить ее.

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

Другими словами, ваша операционная система работает эффективно. Почти все современные операционные системы работают таким образом.

-2

...Согласно этому скриншоту у вас запущено не менее 11 программ, и вы также не отключили "индексирование поиска" или "диспетчер окон рабочего стола". Или, предположительно, любые другие сервисы и т.д., А также записи и анимации msconfig и т.д.

-2

Ваш компьютер использует оперативную память, потому что она включена.

Чтобы расширить это, операционная система - это программа.

  • исследователь
  • Диспетчер задач
  • Кортана
  • Ножницы
  • CTF Loader
  • VyprVPNService

Все, что перечислено выше, и все на вашем скриншоте - это программа, работающая поверх операционной системы, все они программы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .