Pourquoi l'utilisation totale de la mémoire indiquée par le Gestionnaire des tâches Windows est-elle beaucoup plus élevée que la somme de l'utilisation de la mémoire par tous les processus? [dupliquer]

98

Le Gestionnaire des tâches indique l'utilisation totale de la mémoire à 90% du total de mes 6 Go, mais aucun processus n'utilise plus de 250 Mo de RAM et la somme de l'utilisation de la RAM de tous les processus en cours est inférieure à 2 Go. J'ai essayé:

  • En regardant les numéros dans la colonne "Mémoire" de l'onglet "Processus" du Gestionnaire de tâches de Windows 8.
  • Examinez les colonnes "Ensemble de travail", "Ensemble de travail privé", "Ensemble de travail partagé" et "Taille de validation" dans l'onglet "Détails" du Gestionnaire de tâches.
  • En regardant des colonnes similaires liées à la mémoire dans Process Explorer.
  • J'ai essayé de faire fonctionner Sysinternals RAMMap, mais lors de la crise de mémoire insuffisante, il se bloque au lancement. Une fois le problème résolu, RAMMap s'exécute normalement, mais il est trop tard.

Tous montrent une assez petite quantité de mémoire utilisée.

Il y a beaucoup de gens qui demandent des variantes de cette question, avec différentes versions de Windows, partout sur Internet. Certains parviennent à résoudre leurs problèmes de mémoire insuffisante, souvent en réinstallant des logiciels; parfois en réinstallant des fenêtres à partir de zéro. Je cherche une réponse aux questions générales que tous partagent, et qui ne semblent jamais avoir de réponse ailleurs:

  1. Pourquoi la mémoire totale utilisée est-elle bien supérieure à celle utilisée par tous les processus répertoriés, quelle que soit la méthode employée pour les compter?
  2. Comment Windows pourrait-il "savoir" que la mémoire est utilisée sans savoir quel programme l’utilise?
  3. Quels processus peuvent éventuellement utiliser de la mémoire mais ne pas apparaître sur la liste?
  4. Existe-t-il un logiciel pouvant donner plus d'informations sur la mémoire utilisée?

Détails spécifiques à mon propre problème: Depuis la mise à niveau vers Windows 8.1, le problème se produit dès que je me connecte. Je manque de mémoire dès l'exécution d'un programme. J'ai remarqué dans Process Explorer que plusieurs instances de iexplore.exe étaient en cours d'exécution, apparemment démarrées automatiquement. Un cas particulier n’utilisait que quelques Mo de RAM, mais montrait des centaines de millions de fautes de page. Sur un coup de tête, j'ai tué ce processus spécifique et l'utilisation de la mémoire a immédiatement chuté de 70%.

Menant à une question spécifique:

  • Comment tuer un processus qui n'utilisait que quelques Mo libérait plusieurs Go?

Et une question bonus (probablement difficile):

  • À moins de réinstaller Windows, comment puis-je éviter de passer par là chaque fois que je redémarre mon ordinateur?
Josh
la source
3
la mémoire du noyau compte également dans l'utilisation. Poster une photo de RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/…
magicandre1981
2
Je pense que la question devrait être intitulée "Pourquoi suis-je à court de mémoire?"
surfasb
Cette question est impossible de répondre sans précisions. Listez les programmes installés. Ou mieux encore, un vidage des processus en cours à partir de l'Analyseur de performances.
surfasb
1
Arrêtez-vous / redémarrez-vous complètement votre ordinateur ou utilisez-vous un arrêt hybride (par défaut sous Windows 8)? Après le passage à Windows 8, j'ai eu un problème similaire. Je suppose qu'un pilote a pris de plus en plus de RAM physique et ne l'a pas rendue, même après avoir éteint et allumé l'ordinateur. En quelques semaines, il a atteint plusieurs gigaoctets. Alors maintenant, tous les quelques jours, je clique sur "redémarrer" ou sur Shift tout en cliquant sur "Arrêter" pour éteindre le PC.
Robert
2
Dans mon cas, c’était la mémoire "Driver Locked", réservée par Hyper-V pour avoir activé "Dynamic Memory". Je devais arrêter tous les ordinateurs virtuels, désactiver le paramètre et les redémarrer. Merci pour la suggestion de RAMMap.
Dagelf

Réponses:

7

En passant, vous devriez essayer de ne pas utiliser le terme "mémoire". Cela crée beaucoup de confusion. Si vous voulez dire mémoire physique, dites "mémoire physique" ou "RAM". Si vous voulez dire mémoire virtuelle, dites-le. Si vous voulez dire magasin de soutien, dites-le.

Pourquoi la mémoire totale utilisée est-elle bien supérieure à celle utilisée par tous les processus répertoriés, quelle que soit la méthode employée pour les compter?

Parce que le système d'exploitation ne gaspille pas de mémoire physique (RAM) sauf s'il n'a pas le choix.

Comment Windows pourrait-il "savoir" que la mémoire est utilisée sans savoir quel programme l’utilise?

Parce qu'aucun programme ne l'utilise. Considérons, par exemple, la mémoire contenant le code d'un programme qui vient de se terminer. Aucun programme ne l'utilise. Mais cette mémoire est utilisée, car elle n’est pas libre et contient des données qui pourraient être utiles (au cas où le programme fonctionnerait à nouveau).

Quels processus peuvent éventuellement utiliser de la mémoire mais apparaître maintenant sur la liste?

Il n'est pas utilisé par les processus.

Existe-t-il un logiciel pouvant donner plus d'informations sur la mémoire utilisée?

RAMMap peut le faire.

Il n'y a que deux possibilités, la RAM peut être utilisée ou gaspillée. Évidemment, le premier est meilleur. Toute mémoire disponible est à jamais perdue - une machine de 4 Go ne peut pas utiliser 2 Go aujourd'hui pour en utiliser 6 demain. Si vous pensez "Je le veux gratuitement maintenant pour pouvoir l'utiliser plus tard", oubliez ça. Vous pouvez l'utiliser maintenant et l' utiliser plus tard.

Comment tuer un processus qui n'utilisait que quelques Mo libérait plusieurs Go?

Vous manquez de sauvegarde, pas de mémoire physique. Vous disposez de beaucoup de mémoire physique libre mais d'un magasin de sauvegarde insuffisant pour permettre au système d'exploitation de continuer à allouer de la mémoire virtuelle pouvant nécessiter une sauvegarde.

Le processus n'utilisait que quelques Mo de mémoire physique, mais le système d'exploitation aurait peut-être dû lui réserver plusieurs Go de mémoire virtuelle sauvegardée. Par exemple, supposons qu'un processus crée un mappage de mémoire privée accessible en écriture pour un fichier de 2 Go. Le système d'exploitation doit réserver 2 Go de mémoire virtuelle sauvegardée pour le processus, car il peut écrire dans chaque octet de ce mappage. En outre, il pourrait ne jamais écrire à aucun d'entre eux. C'est pourquoi vous avez besoin d'un fichier d'échange de bonne taille.

Les systèmes d'exploitation modernes écrivent beaucoup de chèques (backing store prometteur) qui ne seront jamais encaissés (nécessitent de la mémoire vive). Vous ne pouvez pas continuer à envoyer des chèques (backing store prometteur) même si vous avez beaucoup d’argent à la banque (RAM libre) si vous avez déjà écrit un tas de gros chèques qui pourraient ou non être encaissés (promis autant de backing store comme vous avez). Les fichiers d'échange ajoutent une banque de sauvegarde, ce qui permet au système d'exploitation de continuer à écrire des vérifications.

David Schwartz
la source
14
PS: J'utilise le mot "mémoire" non pas parce que je ne connais pas la différence entre RAM et VM, mais parce que mon ordinateur ne fait que me dire qu'il manque de "mémoire" sans me donner la moindre information sur son contenu réel. veux dire. (Je suppose que cela signifie RAM, pour les raisons que j'ai indiquées dans le commentaire précédent, mais je ne suis pas certain.) Je préférerais que vous utilisiez le vrai vocabulaire (que je peux rechercher si nécessaire) plutôt que des métaphores financières élaborées :)
Josh
91
-1 car après avoir lu la réponse et tous les commentaires, il n’est toujours pas clair pourquoi la mémoire totale utilisée est beaucoup plus grande que la mémoire utilisée par tous les processus répertoriés.
Bennett McElwee
6
Cette terminologie, où la mémoire est "utilisée" même si aucun programme ne l’utilise, est tout à fait différente de la signification habituelle de mots comme "utilisé" et "libre" - c’est peut-être la terminologie de Microsoft, pas la vôtre. Quoi qu'il en soit, supposons par exemple que 50% de la mémoire vive soit actuellement utilisée par les programmes en cours d'exécution et que 25% ne soit utilisé par aucun programme en cours d'exécution, mais qu'il contienne des données pouvant être utiles dans le futur mais pouvant également être supprimées. L'ajout de ceux-ci et l'affichage de «Mémoire: 75%» ne transmettent aucune information utile à l'utilisateur. Je pense que c'est de là que vient la confusion généralisée.
Bennett McElwee
2
@BennettMcElwee Il n'y a pas de bon moyen de réduire l'utilisation de la mémoire à un simple nombre, mais les utilisateurs insistent pour l'obtenir. Cela met les développeurs dans une position inconfortable: ils peuvent fournir un numéro qui n'est pas toujours utile ou ne pas fournir de numéro. La plupart des développeurs de systèmes d’exploitation et d’interfaces graphiques choisissent la première option: ils fournissent un numéro qui entraîne beaucoup de confusion. Si votre question est "est-ce que plus de RAM rendrait mon système plus performant", la réponse est - c'est très, très difficile à dire, même pour les experts.
David Schwartz
2
@DavidSchwartz Votre réponse n'explique pas cela, elle l'indique simplement. Pouvez-vous fournir des liens pour appuyer cette revendication? J'interprète "Mémoire physique XX%" comme signifiant que XX% de la mémoire RAM installée physiquement est actuellement utilisée et n'est pas disponible pour d'autres processus. Je crois être validé par le fait qu'au-delà de 90%, le système est sujet aux verrouillages et que, lorsque les applications tentent d'allouer de la mémoire au-delà de 100%, elles se bloquent complètement. D'après mon expérience, ce n'est pas le régime standard dans lequel la plupart des systèmes fonctionnent.
John Neuhaus