У меня 16 ГБ системной оперативной памяти. При запуске без открытых приложений, кроме диспетчера задач Windows использует около 3 ГБ ОЗУ. Я посмотрел на вкладке процессов, но, кажется, ничего необычного. Как я могу узнать, почему моя Windows использует так много оперативной памяти.
все процессы от всех пользователей
При чтении из poolmon кажется, что мой драйвер беспроводной связи использует около 0,4 ГБ оперативной памяти. Даже если я удалю его, при запуске все равно будет 2,6 ГБ, что все равно слишком много.
После переустановки драйвера беспроводной связи произошла утечка памяти. У меня есть новый скриншот, и я хочу подтвердить, что это действительно утечка памяти.
Ответы:
У вас есть утечка памяти, вызванная драйвером. Посмотрите на высокое значение памяти невыгружаемого ядра. В вашем случае это более 3,7 ГБ. Вы можете использовать poolmon, чтобы увидеть, какой драйвер вызывает высокую загрузку .
Установите Windows WDK , запустите poolmon, отсортируйте его по Pтипу пула, чтобы не выгружаемый был сверху, а Bпосле байтов - чтобы увидеть тег, который использует больше памяти. Запустите poolmon, перейдя в папку, где установлен WDK, перейдите в Инструменты (или C: \ Program Files (x86) \ Windows Kits \ 10 \ Tools \ x64) и нажмите poolmon.exe.
Теперь посмотрите, какой тэг пула использует больше всего памяти, как показано здесь:
Теперь откройте командную строку и запустите команду findstr. Для этого откройте командную строку и введите «cd C: \ Windows \ System32 \ drivers» без кавычек. Затем введите «findstr / s __ . », Где __ - это тег (самое левое имя в poolmon). Сделайте это, чтобы увидеть, какой драйвер использует этот тег:
Теперь перейдите в папку драйверов (C: \ Windows \ System32 \ drivers) и щелкните правой кнопкой мыши нужный драйвер (intmsd.sys в приведенном выше примере изображения). Нажмите Свойства, перейдите на вкладку сведений, чтобы найти название продукта. Ищите обновление для этого продукта.
Если тег пула показывает только драйверы Windows или указан в файле pooltag.txt (
"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt"
)Вы должны использовать xperf, чтобы отследить, что вызывает использование . Установите WPT из Windows SDK , откройте cmd.exe от имени администратора и выполните следующее:
захватить 30 -60-х годов роста. Откройте ETL с помощью WPA.exe, добавьте графики пула на панель анализа.
Поместите столбец пула тегов на первое место и добавьте столбец стека. Теперь загрузите символы в WPA.exe и разверните стек тега, который вы видели в poolmon.
Теперь найдите другие сторонние драйверы, которые вы можете увидеть в стеке. Здесь
Thre
тэг (Thread) используется AVKCl.exe из G-Data. Ищите обновления драйверов / программ, чтобы исправить это.источник
Ну, во-первых, прежде чем перейти к более подробному ответу. На первом снимке экрана размер пула без пейджинга (тип использования памяти ядра) составляет 1,3 ГБ. Это кажется необычно высоким, особенно в течение 30 минут после загрузки. Я думаю, я мог видеть, как NP Pool достигает такого высокого уровня после длительного использования или с программой, которая просачивалась как сито. В отличие от этого, мой пул NP обычно составляет от 100 до 200 мегабайт, а размер моего выгружаемого пула может достигать 400 или 500 (и это после того, как моя система работает без перезагрузки в течение нескольких недель).
Вы можете включить несколько дополнительных столбцов в диспетчере задач, щелкнув правой кнопкой мыши заголовки столбцов и выбрав выбрать столбцы. Следует добавить
Working Set (private)
,Working Set (shared)
,Commit
, иNP Pool
. Я просканировал бы все ваши процессы от всех пользователей и увидел бы, есть ли у какого-либо из них пул NP более 256 КБ. Если вы видите какую-либо, особенно любую, которая значительно выше, это может быть источником проблемы или, по крайней мере, ее частью.Ваш общий рабочий набор, объем физической памяти, используемой процессом, представляет собой комбинацию частного и общего рабочих наборов (WS). Private обычно больше для большинства процессов, но могут быть и такие, которые используют большее количество общих WS. Эти два, как правило, должны составлять общую сумму WS. Фиксация - это количество вашего рабочего набора, которое было передано в резервное хранилище (в большинстве случаев это файл подкачки Windows). Фоновые приложения часто имеют более высокий уровень Commit, чем WS, что указывает на то, что большая часть их выгружаемого пула была выгружена из памяти в файл подкачки (что вполне нормально для приложений для настольных компьютеров, которые были свернуты и некоторое время не использовались).
Non-Paged Pool - это память, которая не может и никогда не будет выгружена из физической памяти ... что фактически является вашим постоянным минимальным использованием физической памяти. Память NP Pool часто содержит программный код и критические разделы, которые должны находиться в физической памяти для правильного и безопасного поведения, специальные кучи и т. Д. Из 60 процессов, если все они имеют 256 КБ памяти NP Pool, тогда ваш абсолютный минимум использования физической памяти будет около 15 360 КБ. В большинстве случаев одно или два приложения могут иметь пул NP размером 256 КБ, в то время как в большинстве приложений их меньше, часто значительно меньше (или их нет). Крайне маловероятно, что система когда-либо выгрузит все рабочие процессы, поэтому не ожидайте, что использование памяти достигнет такого низкого уровня.
Наконец, смысл в том, чтобы иметь больше памяти, чтобы избежать необходимости перелистывать данные в расширенное пространство памяти (файл подкачки, файл подкачки) и из него на физическом диске. Пейджинг - это процесс, который включает перемещение блоков выделенной физической памяти, выталкивание одних на диск и перенос других в физическую память с диска. Пейджинг, чтобы быть простым, крайне нежелателен. Само по себе это не «плохо», но это может сильно снизить производительность, если это происходит слишком часто. Конечная точка увеличения общего физического ОЗУ в системе - позволить большему количеству процессов хранить больше своей фиксации в физической памяти (больший рабочий набор). Потребление памяти не является проблемой, и когда больше выполняющихся процессов используют больше памяти, общая производительность системы и производительность активных процессов обычно будут выше,
Windows управляет памятью для вас и автоматически подготавливает данные в и из памяти для вас и из файла подкачки. Если вы запускаете процесс, которому требуется 9 ГБ памяти, а ваша система уже использует 4 ГБ (из 12 ГБ), то система автоматически определит, каким процессам не требуется немедленный доступ ко всему их рабочему набору, и отобразит некоторые или все страницы. их выгружаемого пула, чтобы обменять их, чтобы освободить лишние 1 ГБ. Если вашему большому процессу в конечном итоге потребуется больше памяти, окна будут дополнительно сокращать рабочий набор других процессов, пока у него не будет достаточно свободного места для выделения нового запрошенного блока. Ваш большой процесс может в конечном итоге потреблять всю доступную память, кроме NP Pool и, возможно, некоторые дополнительные минимальные накладные расходы для периодически выполняющихся процессов, которые не позволяют Windows высвободить больше своего рабочего набора (т.е. е. у них есть ожидающие ошибки страницы, которые в противном случае Windows вывела бы из физической памяти, но, поскольку они запрашиваются, они не могут быть перемещены.)
Если процессу требуется больше памяти, чем ему разрешено (32-разрядные процессы обычно могут получить доступ к 2 ГБ, а некоторые чуть менее 4 ГБ с расширенными методами, в то время как 64-разрядные процессы обычно могут получать доступ к около 48 ГБ памяти каждый), тогда окна иногда пытаются виртуализировать свою память с пространством подкачки. Если 32-разрядное приложение хочет использовать максимально допустимое пространство 2 ГБ, но доступно только 1,2 ГБ, Windows зарезервирует все 2 ГБ в файле подкачки и перемещает собственные данные процессов в файл подкачки и из него по мере необходимости, чтобы Поддержка использования памяти приложения. Общее использование «памяти» в этом случае может оказаться больше, чем доступная физическая память, если использовать Total Commit. Обычно Total Commit будет максимально равен общему размеру файла подкачки, который при управлении системой обычно в 2-3 раза больше объема физической памяти. В твоем случае,
Один последний момент. В своем ответе вы сказали, что у вас 16 ГБ ОЗУ, тогда как диспетчер задач видит только 12 ГБ ОЗУ. Одна из двух вещей здесь. Либо ваша система действительно имеет только 12 ГБ ОЗУ, либо одна из ваших флешек не регистрируется должным образом. Если флешка (я предполагаю, что 4x 4 Гб флешки), это может быть плохо, может быть не совсем правильно сидит на вашей материнской плате, или ваша материнская плата может иметь проблемы с обнаружением памяти.
Чтобы проверить, является ли это последним, вы должны сначала обновить BIOS материнской платы до последней версии. У меня была похожая проблема ... мои шесть трёхканальных DDR3-флешек оперативной памяти (6x2 Гб) были хорошими, основываясь на индивидуальном тестировании каждого из них ... но моя материнская плата случайно решила не считать один или два из них время от времени, часто оставляя мне только 8 ГБ оперативной памяти. Обновление BIOS устранило проблему, и теперь у меня есть надежный доступ ко всем 12 ГБ памяти.
источник
Он использует так много оперативной памяти, потому что он предназначен для этого. Нет абсолютно никаких затрат, связанных с использованием оперативной памяти. Фактически, используемая ОЗУ лучше, чем свободная, потому что операционной системе не нужно ничего делать для ее использования. Использование свободной оперативной памяти требует использования, что требует усилий.
Если вы думаете: «Я хочу, чтобы моя оперативная память была свободной, чтобы я мог использовать ее позже», забудьте об этом. Оперативная память не должна быть свободной сейчас, чтобы использовать ее позже. Вы можете использовать его сейчас и использовать его позже. Здесь нет компромисса - нет абсолютно никаких недостатков в использовании оперативной памяти.
Оперативная память используется постоянно и напрямую переключается с одного использования на другое, не требуя усилий, чтобы освободить ее, просто чтобы снова использовать ее. Современные операционные системы оставляют ОЗУ свободной только тогда, когда у них нет другого выбора.
источник
“Why is Windows using RAM?”
, вопрос в том, что“Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”
этот пост должен быть в лучшем случае комментарием, потому что он не затрагивает реальный вопрос или даже не пытается на него ответить; это лишь небольшой совет, и плохой совет, поскольку, если бы ОП проигнорировал его, как предполагалось, утечка памяти не была бы обнаружена.Причиной, не упомянутой выше, является Hyper-V.
Мне удалось идентифицировать это с отличной утилитой RamMap :
Скриншот от после. До того, как объем памяти «Driver Locked» превышал 6 ГБ, на этой конкретной машине было более 80% ОЗУ. Мне пришлось зайти в диспетчер Hyper-V и отключить «Динамическую память». Любопытно, что даже после его повторного включения память «Driver Locked» оставалась низкой - я могу только предположить, что предыдущие экземпляры увеличивали ее, и что Hyper-V автоматически не уменьшает выделенную память:
источник