Comment trouver la source de fuite de mémoire dans Windows 7?

10

J'ai une machine Windows 7 qui continue de manquer de RAM. Je peux voir la RAM libre diminuer pendant quelques heures jusqu'à ce que la machine ne réponde plus. J'ai vérifié la liste des processus et aucun d'eux ne prend autant de RAM.

J'ai également vérifié le nombre de poignées par processus et divers autres indicateurs, mais je ne trouve toujours pas pourquoi la machine manque de RAM.

Existe-t-il un bon moyen de vérifier comment la mémoire est utilisée dans Windows?

Éditer

Voici le résultat de tasklistquelques minutes avant que la machine ne réponde plus:

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

À ce stade, wmic OS get FreePhysicalMemory /Valuesignale environ 400 Mo de mémoire libre sur 2 Go.

RamMap:

entrez la description de l'image ici

Gestionnaire des tâches:

entrez la description de l'image ici

laurent
la source
1
Pouvez-vous redémarrer votre ordinateur et publier une capture d'écran de vos processus Task Manager? Et assurez-vous d'afficher les processus de tous les utilisateurs s'il vous plaît. Si vous avez plus de 50-60 après un redémarrage, il y a certainement des choses que vous pouvez faire, mais si rien ne semble louche, les choses pourraient devenir délicates ..
MonkeyZeus
1
Vous manquez de mémoire virtuelle ou de mémoire physique. La solution et la cause sont différentes. Un avertissement de mémoire virtuelle faible est un problème de configuration, le manque de mémoire physique signifie que vous devez exécuter de nombreux processus.
Ramhound
1
Avez-vous des preuves que la cause est une fuite de mémoire? Il semble que vous ayez de bonnes preuves qu'il ne s'agit pas d' une fuite de mémoire. (Bien que cela puisse être un pilote éclaté, je suppose.)
David Schwartz
Merci pour les commentaires. J'ai ajouté plus d'informations au message, en particulier la liste des tâches. C'est la mémoire physique libre qui ne cesse de baisser avec le temps. Est-il possible de vérifier comment il est utilisé?
laurent
1
publier des captures d'écran de RAMMAp: technet.microsoft.com/en-us/sysinternals/ff700229.aspx
magicandre1981

Réponses:

8

L'usgae à haute mémoire provient d'une utilisation élevée des tables de pages . Pour voir quels processus l'utilisent, installez Windows Performance Toolkit , ouvrez une invite de commande en tant qu'administrateur et exécutez cette commande:

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

Ouvrez le MemUsage.etlavec Windows Performance Analyzer (WPA.exe), faites glisser et déposez le graphique "ResidentSet" de la liste de gauche sur le volet d'analyse:

entrez la description de l'image ici

Déplacez maintenant la colonne "Catégorie de page" vers la gauche et développez l'entrée "Tableau de page":

entrez la description de l'image ici

Ici, vous voyez les processus qui ont la plus grande utilisation de pagetable. Sur le bon site (après la ligne bleue), vous voyez l'utilisation de la mémoire du tableau des pages en Mo pour chaque processus.

magicandre1981
la source
dans windows8.1 je ne vois pas 'residentet' comme une option graphique disponible. comment puis-je l'avoir? un drapeau xperf différent?
akira
je réponds à mon propre commentaire: mettez à jour xperf.
akira
Cela ne fonctionne pas pour moi dans Windows 7 - le premier appel à xperf donnexperf: error: NT Kernel Logger: Invalid flags. (0x3ec).
benshepherd
@benshepherd pour moi ça marche. Assurez-vous d'utiliser le dernier WPT du SDK 8.1: dropbox.com/s/e5ol59a6n9g3ctb/Win7_xperf.png
magicandre1981
1
J'ai finalement découvert le problème, c'était Lenovo "RapidBoot Shield" et le supprimer a résolu mon problème: superuser.com/a/850346/79763
sparrowt
0

les seules choses "étranges" que je peux voir ici sont les suivantes:

  • vous avez un processus appelé scan.exequi monopolise 98% du processeur en ce moment
  • vous avez un processus appelé fssm32.exequi a 9 millions de défauts de page. fssm32.exeressemble à un programme du scanner antivirus f-secure.
  • vous avez également un processus appelé SAV32CLI.EXEqui absorbe 130 Mo + de mémoire. il semble que vous vous sentiez mieux protégé pour exécuter 2 antivirus: f-secure et sophos en même temps.

la capture d'écran rammap me convient: vous disposez d'un pool de fichiers mis en cache de ~ 400 Mo, dont 85 Mo en utilisation active, 300 Mo + en mode veille (ce qui signifie qu'ils sont libérés dès que vous avez besoin de plus de RAM). en regardant votre quantité de processus sshd.exe et bash.exe, cela semble également légitime.

la meilleure façon d'apprendre le fonctionnement interne de la façon dont Windows gère la mémoire est cette conférence ici: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 .. vous utilisez déjà certains des outils développés par le conférencier .

akira
la source
1
mes contacts Microsoft (Microsoft Premier Field Engineers) m'ont également dit que plusieurs 100 Mo de table de pages n'étaient pas normaux pour Windows.
magicandre1981