Jak znaleźć źródło wycieku pamięci w systemie Windows 7?


10

Mam komputer z systemem Windows 7, który ciągle ma mało pamięci RAM. Widzę, że wolna pamięć RAM spada w ciągu kilku godzin, aż do momentu, gdy maszyna przestanie odpowiadać. Sprawdziłem listę procesów i żadna z nich nie zajmuje tyle pamięci RAM.

Sprawdziłem również liczbę uchwytów na proces i różne inne wskaźniki, ale nadal nie mogę znaleźć przyczyny braku pamięci RAM.

Czy jest jakiś dobry sposób, aby sprawdzić, jak pamięć jest używana w systemie Windows?

Edytować

Oto wynik tasklistkilku minut, zanim maszyna przestanie odpowiadać:

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

W tym momencie wmic OS get FreePhysicalMemory /Valuezgłasza około 400 MB wolnej pamięci z 2 GB.

RamMap:

wprowadź opis zdjęcia tutaj

Menadżer zadań:

wprowadź opis zdjęcia tutaj


1
Czy możesz ponownie uruchomić komputer i opublikować zrzut ekranu procesów Menedżera zadań? I pamiętaj, aby wyświetlić procesy wszystkich użytkowników. Jeśli masz więcej niż 50-60 po ponownym uruchomieniu, na pewno są rzeczy, które możesz zrobić, ale jeśli nic nie wygląda podejrzanie, sprawy mogą stać się trudne.
— MonkeyZeus

1
Czy kończy Ci się pamięć wirtualna lub fizyczna? Rozwiązanie i przyczyna są różne. Ostrzeżenie o niskiej pamięci wirtualnej jest problemem konfiguracyjnym, ponieważ brak pamięci fizycznej oznacza, że ​​musisz wykonywać wiele procesów.
— Ramhound

1
Czy masz jakieś dowody, że przyczyną jest wyciek pamięci? Wygląda na to, że masz dobre dowody, że nie jest to wyciek pamięci. (Chyba może to być zniszczony kierowca.)
— David Schwartz

Dzięki za opinie. Dodałem więcej informacji do posta, w szczególności listę zadań. Jest to wolna pamięć fizyczna, która z czasem spada. Czy można sprawdzić, jak się go stosuje?
— laurent

Odpowiedzi:


8

Usgae o wysokiej pamięci pochodzą z dużego wykorzystania tabeli stron . Aby zobaczyć, które procesy go wykorzystują, zainstaluj Windows Performance Toolkit , otwórz wiersz polecenia jako administrator i uruchom następujące polecenie:

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

Otwórz za MemUsage.etlpomocą Windows Performance Analyzer (WPA.exe), przeciągnij i upuść wykres „ResidentSet” z lewej listy wykresów do okienka analizy:

wprowadź opis zdjęcia tutaj

Teraz przenieś kolumnę „Kategoria strony” na lewą stronę i rozwiń pozycję „Tabela stron”:

wprowadź opis zdjęcia tutaj

Tutaj zobaczysz procesy, które mają wysokie wykorzystanie stronicowania. Po prawej stronie (za niebieską linią) widać zużycie pamięci tabeli stron w MB dla każdego procesu.


w Windows 8.1 nie widzę „residentset” jako dostępnej opcji graficznej. jak mogę to dostać? inna flaga Xperf?
— akira,

odpowiadam na mój komentarz: aktualizacja xperf.
— akira,

To nie działa dla mnie w systemie Windows 7 - pierwsze połączenie z Xperf dajexperf: error: NT Kernel Logger: Invalid flags. (0x3ec).
— benshepherd

@ benshepherd dla mnie to działa. Upewnij się, że używasz najnowszej wersji WPT z 8.1 SDK: dropbox.com/s/e5ol59a6n9g3ctb/Win7_xperf.png
— magicandre1981

1
W końcu odkryłem problem, to był Lenovo „RapidBoot Shield” i usunięcie go rozwiązało mój problem: superuser.com/a/850346/79763
— sparrowt

0

jedyne „dziwne” rzeczy, które tu widzę, to:

  • masz proces o nazwie scan.exe98% procesora, który pochłania teraz
  • masz proces o nazwie fssm32.exe9 milionów błędów stron. fssm32.exewygląda jak program ze skanera antywirusowego f-secure.
  • masz także proces o nazwie, SAV32CLI.EXEktóry usuwa kolejne 130 MB pamięci. wygląda na to, że czujesz się lepiej chroniony, aby uruchamiać 2 skanery antywirusowe: jednocześnie f-secure i Sophos.

zrzut ekranu z rammapem wygląda dla mnie dobrze: masz pulę ~ 400 MB buforowanych plików, z których 85 MB jest w aktywnym użyciu, 300 MB + w trybie gotowości (co oznacza, że ​​są one zwalniane, gdy tylko potrzebujesz więcej pamięci RAM). patrząc na ilość procesów sshd.exe i bash.exe, wygląda to również na wiarygodne.

najlepszym sposobem na poznanie wewnętrznego sposobu zarządzania pamięcią przez system Windows jest ta rozmowa tutaj: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 .. już używasz niektórych narzędzi opracowanych przez głośnik .


1
moi znajomi Microsoft (inżynierowie terenowi Microsoft Premier) również powiedzieli mi, że kilka 100 MB tabeli stron nie jest normalne dla Windows.
— magicandre1981
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.