В течение последних нескольких дней мне приходилось перезагружать мой компьютер пару раз в день, потому что у меня не хватает памяти. У меня 32 ГБ оперативной памяти DDR3 1866 МГц.

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

Что-нибудь выглядит ненормальным?

1 ответ1

2

"Недостаточно памяти", "недостаточно памяти" и т.д., Как правило, не имеют ничего общего со свободной оперативной памятью, а скорее с пределом фиксации и пределом фиксации.

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

Однако две вещи здесь выглядят ненормально, и я подозреваю, что этого достаточно, чтобы определить причину проблемы: у вас есть около 21 000 объектов процесса ("Proc") и около 23 000 объектов потока ("Thre").

Для сравнения: моя система прямо здесь, также Windows 10, работала около 10 дней и имеет только около 200 и 3200 таких объектов соответственно.

Это, вероятно, указывает на то, что у вас запущена какая-то программа, которая безумно создает процессы и не позволяет им полностью завершиться, возможно, не закрывая дескрипторы для них и / или их потоков. Хотя они не оказывают большого влияния на вашу оперативную память прямо сейчас (они занимают около 100 МБ общего объема невыгружаемого пула), если процессы и потоки продолжают создаваться и не удаляться, в конечном итоге они будут использовать почти всю вашу оперативную память. ОЗУ, переданное в невыгружаемый пул, действительно вносит вклад в "фиксацию заряда", поэтому в конечном итоге это приведет к ошибкам "нехватка памяти" или "нехватка памяти".

Быстрый способ найти преступника можно найти на вкладке "Сведения" диспетчера задач. Добавьте столбец "Ручки", отсортируйте по этому столбцу и посмотрите, не выглядит ли что-нибудь необычно высоким, особенно если оно постоянно увеличивается.

nb: столбец "threads", скорее всего, не будет полезным. Было бы полезно, если бы вы искали один процесс с целой кучей потоков - что не является невозможным, но факт, что здесь существует столько же процессов, сколько потоков, противоречит этому. С каждым процессом вы получаете один поток (для запуска), поэтому чума процессов приносит с ним столько же потоков, но это не будет отображаться в счетчике "потоков" какого-либо одного процесса.

Однако может помочь представление "дерева процессов" инструмента sysinternals Process Explorer. Вы ищете процесс с множеством процессов "под" ним.

Если это не сработает, попробуйте использовать инструмент sysinternals ProcMon и найдите события создания процесса.

Если этого не происходит, то, вероятно, это делается в драйвере ядра. Используйте Windows Performance Toolkit, чтобы найти события создания процесса.

Для получения дополнительной информации о коммитах см. Мои ответы на вопросы, которые я связал ниже. Обычно нехватка коммитов исправляется путем добавления ОЗУ или увеличения размера файла подкачки (или запуска меньшего количества материала за один раз), но эти методы не помогут с этой проблемой. Не выгружаемый пул не может быть выгружен, поэтому эти объекты Proc и Thre обязательно занимают оперативную память. И даже если ваш файл подкачки достаточно велик, чтобы избежать превышения лимита фиксации, система в конечном итоге будет показывать другие проблемы из-за нехватки используемой оперативной памяти.

Windows говорит, что ОЗУ закончилась, пока еще доступно 4 ГБ физической памяти

Как работает память / фиксация в Windows 10?

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