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.