Как найти источник утечки памяти в Windows 7?


10

У меня машина с Windows 7, в которой все меньше памяти. Я вижу, как свободная оперативная память падает в течение нескольких часов, пока машина не перестает отвечать на запросы. Я проверил список процессов, и ни один из них не занимает столько оперативной памяти.

Я также проверил количество дескрипторов на процесс и различные другие индикаторы, но все еще не могу понять, почему на машине не хватает оперативной памяти.

Есть ли хороший способ проверить, как используется память в Windows?

редактировать

Вот результат tasklistнескольких минут, прежде чем машина перестает отвечать на запросы:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        300 K
smss.exe                       196 Services                   0      1,024 K
csrss.exe                      272 Services                   0      4,336 K
wininit.exe                    320 Services                   0      4,184 K
csrss.exe                      332 Console                    1      3,516 K
winlogon.exe                   372 Console                    1      6,316 K
services.exe                   416 Services                   0      8,112 K
lsass.exe                      432 Services                   0     10,088 K
lsm.exe                        440 Services                   0      3,664 K
svchost.exe                    548 Services                   0      8,152 K
svchost.exe                    620 Services                   0      6,564 K
svchost.exe                    660 Services                   0     15,764 K
LogonUI.exe                    724 Console                    1     18,428 K
svchost.exe                    768 Services                   0      7,992 K
svchost.exe                    828 Services                   0      9,724 K
svchost.exe                    852 Services                   0     28,092 K
svchost.exe                    176 Services                   0     13,096 K
spoolsv.exe                    824 Services                   0     10,608 K
svchost.exe                    952 Services                   0     11,632 K
svchost.exe                   1076 Services                   0      8,524 K
fshoster32.exe                1120 Services                   0      9,148 K
fsorsp.exe                    1200 Services                   0      8,036 K
fsgk32.exe                    1324 Services                   0      3,084 K
cygrunsrv.exe                 1552 Services                   0      5,852 K
conhost.exe                   1864 Services                   0      2,996 K
sshd.exe                      1896 Services                   0      7,804 K
FSMA32.EXE                    2024 Services                   0      1,628 K
svchost.exe                   1320 Services                   0      5,092 K
fssm32.exe                    1704 Services                   0      2,196 K
FSHDLL64.EXE                  2120 Services                   0        644 K
SearchIndexer.exe             3260 Services                   0     13,596 K
sshd.exe                    138920 Services                   0      8,696 K
sshd.exe                    138448 Services                   0      8,696 K
sshd.exe                    138660 Services                   0      8,696 K
bash.exe                    137924 Services                   0      5,380 K
bash.exe                    137820 Services                   0      3,832 K
SAV32CLI.EXE                136344 Services                   0    133,868 K
WmiPrvSE.exe                139444 Services                   0      7,168 K
sshd.exe                    139672 Services                   0      8,692 K
sshd.exe                    139876 Services                   0      8,684 K
bash.exe                    139992 Services                   0      5,432 K
bash.exe                    140040 Services                   0      3,996 K
bash.exe                    140200 Services                   0      5,400 K
bash.exe                    139424 Services                   0      4,048 K
typeperf.exe                139300 Services                   0      5,372 K
sleep.exe                   138268 Services                   0      2,272 K
sshd.exe                    139612 Services                   0      7,168 K
sshd.exe                    137720 Services                   0      5,700 K
bash.exe                    139524 Services                   0      5,304 K
bash.exe                    138952 Services                   0      3,756 K
tasklist.exe                137580 Services                   0      5,164 K
bash.exe                    139460 Services                   0      5,452 K
bash.exe                    139796 Services                   0        104 K

На тот момент wmic OS get FreePhysicalMemory /Valueсообщается о 400 МБ свободной памяти из 2 ГБ.

RamMap:

введите описание изображения здесь

Диспетчер задач:

введите описание изображения здесь


1
Можете ли вы перезагрузить компьютер и опубликовать скриншот процессов диспетчера задач? И не забудьте отобразить процессы от всех пользователей, пожалуйста. Если после перезагрузки у вас больше 50-60, то вы определенно можете что-то сделать, но если ничего не выглядит подозрительно, то все может стать сложнее ..
MonkeyZeus

1
У вас заканчивается виртуальная память или физическая память. Решение и причина разные. Предупреждение о низком уровне виртуальной памяти является проблемой конфигурации, так как низкий уровень физической памяти означает, что вам приходится выполнять множество процессов.
Ramhound

1
У вас есть доказательства того, что причиной является утечка памяти? Похоже, у вас есть веские доказательства того, что это не утечка памяти. (Думаю, это может быть неуправляемый водитель.)
Дэвид Шварц,

Спасибо за ответ. Я добавил еще немного информации к посту, в частности список задач. Это свободная физическая память, которая продолжает уменьшаться с течением времени. Можно ли проверить, как это используется?
Лоран

1
опубликовать скриншоты RAMMAp: technet.microsoft.com/en-us/sysinternals/ff700229.aspx
magicandre1981

Ответы:


8

Высокая память обычно происходит из-за высокого использования таблицы страниц . Чтобы увидеть, какие процессы используют его, установите Windows Performance Toolkit , откройте командную строку от имени администратора и выполните эту команду:

xperf -on ReferenceSet -BufferSize 1024 -MaxFile 512 -FileMode Circular  && timeout 5 && xperf -d MemUsage.etl

Откройте с MemUsage.etlпомощью Windows Performance Analyzer (WPA.exe), перетащите график ResidentSet из левого списка графиков на панель анализа:

введите описание изображения здесь

Теперь переместите столбец «Категория страницы» влево и разверните запись «Таблица страниц»:

введите описание изображения здесь

Здесь вы видите процессы, которые имеют высокое использование таблиц. На правом сайте (после синей линии) вы видите использование памяти таблицы страниц в МБ для каждого процесса.


в windows8.1 я не вижу 'residentset' как доступную опцию graph. как я могу получить это? другой флаг xperf?
Акира

я отвечаю на свой комментарий: обновите xperf.
Акира

Это не работает для меня в Windows 7 - первый вызов xperf даетxperf: error: NT Kernel Logger: Invalid flags. (0x3ec).
benshepherd

@Benshepherd для меня это работает. Убедитесь, что вы используете последнюю версию
magicandre1981

1
В конце концов я обнаружил проблему, это был Lenovo "RapidBoot Shield", и удаление ее решило мою проблему: superuser.com/a/850346/79763
sparrowt

0

Единственные «странные» вещи, которые я могу видеть здесь, это:

  • у вас есть процесс под названием scan.exe98% процессоров прямо сейчас
  • у вас есть процесс, fssm32.exeкоторый называется 9 миллионов ошибок страниц. fssm32.exeвыглядит как программа от сканера вирусов f-secure.
  • у вас также есть процесс под названием, SAV32CLI.EXEкоторый потребляет еще 130 Мб памяти. Похоже, вы чувствуете себя лучше защищенным, чтобы запустить 2 антивирусных сканера: f-secure и sophos одновременно.

rammap-screenshot выглядит хорошо для меня: у вас есть пул ~ 400 МБ кэшированных файлов, 85 МБ из них в активном использовании, 300 МБ + в режиме ожидания (то есть они освобождаются, как только вам нужно больше памяти). если посмотреть на количество процессов sshd.exe и bash.exe, это тоже выглядит вполне законно.

лучший способ узнать внутреннюю работу того, как windows управляет памятью, это обсуждение здесь: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 .. вы уже используете некоторые инструменты, разработанные динамиком ,


1
мои контакты с Microsoft (полевые инженеры Microsoft) также сказали мне, что несколько 100 МБ таблицы страниц не являются нормальными для Windows.
magicandre1981
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.