Come trovare l'origine della perdita di memoria in Windows 7?


10

Ho una macchina Windows 7 che continua a rimanere a corto di RAM. Riesco a vedere la RAM libera che scende per alcune ore fino a quando la macchina non risponde. Ho controllato l'elenco dei processi e nessuno di loro occupa tanta RAM.

Ho anche controllato il numero di handle per processo e vari altri indicatori, ma ancora non riesco a trovare il motivo per cui la macchina esaurisce la RAM.

C'è un buon modo per verificare come viene utilizzata la memoria in Windows?

modificare

Ecco il risultato di tasklistqualche minuto prima che la macchina non risponde:

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

A quel punto, wmic OS get FreePhysicalMemory /Valueriporta circa 400 MB di memoria libera su 2 GB.

RamMap:

inserisci qui la descrizione dell'immagine

Task Manager:

inserisci qui la descrizione dell'immagine


1
Puoi riavviare il computer e pubblicare uno screenshot dei processi di Task Manager? E assicurati di visualizzare i processi di tutti gli utenti, per favore. Se hai più di 50-60 dopo un riavvio, allora ci sono sicuramente cose che puoi fare ma se nulla sembra sospetto, le cose potrebbero diventare difficili ...
MonkeyZeus

1
Stai esaurendo la memoria virtuale o la memoria fisica. La soluzione e la causa sono diverse. Un avviso di memoria virtuale insufficiente è un problema di configurazione, poiché la memoria fisica è insufficiente, significa che è necessario eseguire molti processi.
Ramhound,

1
Hai qualche prova che la causa sia una perdita di memoria? Sembra che tu abbia buone prove che non è una perdita di memoria. (Anche se potrebbe essere un guidatore rotto, immagino.)
David Schwartz,

Grazie per il feedback. Ho aggiunto alcune informazioni al post, in particolare l'elenco delle attività. È la memoria fisica libera che continua a diminuire nel tempo. È possibile verificare come viene utilizzato?
Laurent,

Risposte:


8

L'utilizzo di memoria elevata deriva da un elevato utilizzo della tabella delle pagine . Per vedere quali processi lo utilizzano, installa Windows Performance Toolkit , apri un prompt dei comandi come amministratore ed esegui questo comando:

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

Aprire MemUsage.etlcon Windows Performance Analyzer (WPA.exe), trascinare e rilasciare il grafico "ResidentSet" dall'elenco dei grafici a sinistra nel riquadro di analisi:

inserisci qui la descrizione dell'immagine

Ora sposta la colonna "Categoria pagina" sul lato sinistro ed espandi la voce "Tabella pagine":

inserisci qui la descrizione dell'immagine

Qui puoi vedere i processi che hanno un elevato utilizzo della pagetable. Nel sito corretto (dopo la linea blu), viene visualizzato l'utilizzo della memoria della tabella delle pagine in MB per ciascun processo.


in Windows 8.1 non vedo 'residentiet' come un'opzione grafica disponibile. come posso averlo? una bandiera xperf diversa?
Akira,

rispondo al mio commento: aggiorna xperf.
Akira,

Questo non funziona per me in Windows 7 - dà la prima chiamata a xperfxperf: error: NT Kernel Logger: Invalid flags. (0x3ec).
benshepherd

@benshepherd per me funziona. Assicurati di utilizzare l'ultimo WPT dall'SDK
magicandre1981

1
Alla fine ho scoperto il problema, era Lenovo "RapidBoot Shield" e rimuoverlo ha risolto il mio problema: superuser.com/a/850346/79763
sparrowt

0

le uniche "strane" cose che posso vedere qui sono queste:

  • hai un processo chiamato scan.exeche spinge via il 98% della CPU in questo momento
  • hai un processo chiamato fssm32.exeche ha 9 milioni di errori di pagina. fssm32.exesembra un programma dallo scanner antivirus f-secure.
  • hai anche un processo chiamato SAV32CLI.EXEche porta via altri 130mb + di memoria. sembra che tu ti senta meglio protetto per eseguire 2 antivirus: f-secure e sophos allo stesso tempo.

lo screenshot di rammap sembra ok per me: hai un pool di file memorizzati nella cache di ~ 400mb, 85mb di loro in uso attivo, 300mb + in modalità standby (il che significa che vengono liberati non appena hai bisogno di più RAM). esaminando la quantità di processi sshd.exe e bash.exe anche questo sembra legittimo.

il modo migliore per imparare il funzionamento interno di come Windows gestisce la memoria è questo discorso qui: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 .. stai già utilizzando alcuni degli strumenti sviluppati dall'altoparlante .


1
i miei contatti Microsoft (Microsoft Premier Field Engineers) mi hanno anche detto che diversi 100 MB di tabella delle pagine non sono normali per Windows.
magicandre1981,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.