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


Le Gestionnaire des tâches affiche mon utilisation totale de la mémoire à 90% de mon total de 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 chiffres dans la colonne "Mémoire" de l'onglet "Processus" du Gestionnaire des tâches Windows 8.
  • En regardant les colonnes "Jeu de travail", "Jeu de travail privé", "Jeu de travail partagé" et "Taille de validation" de l'onglet "Détails" du Gestionnaire des tâches.
  • En regardant des colonnes similaires liées à la mémoire dans Process Explorer.
  • J'ai essayé d'utiliser Sysinternals RAMMap, mais alors que je suis confronté à une crise de mémoire faible, il tombe en panne au lancement. Une fois le problème résolu, RAMMap s'exécute normalement, mais à ce stade, il est trop tard.

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

Il y a beaucoup de gens qui posent des variantes de cette question, avec différentes versions de Windows, partout sur Internet. Certains d'entre eux parviennent à résoudre leurs problèmes de mémoire insuffisante, souvent en réinstallant des logiciels. parfois en réinstallant Windows à 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 beaucoup plus élevée que la mémoire utilisée par tous les processus répertoriés, quelle que soit la façon dont je tente de les compter?
  2. Comment Windows peut-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 dans la liste?
  4. Existe-t-il un logiciel qui peut fournir 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 survient dès que je me connecte. Je manque de mémoire dès que je lance 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. Une instance particulière utilisait seulement quelques Mo de RAM, mais affichait des centaines de millions de défauts 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 le fait de tuer un processus censé n'utiliser que quelques Mo peut-il libérer plusieurs Go?

Et une question bonus (vraisemblablement dure):

  • À moins de réinstaller Windows, comment pourrais-je éviter de devoir passer par là chaque fois que je redémarre mon ordinateur?

75
2018-03-11 02:46


origine


la mémoire du noyau est également prise en compte dans l’utilisation. Post photo de RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/... - magicandre1981
Je pense que la question devrait être intitulée "Pourquoi je manque de mémoire". - surfasb
Cette question est impossible à répondre sans détails. Énumérez les programmes installés. Ou mieux encore, un vidage des processus en cours d'exécution de l'analyseur de performances. - surfasb
Arrêtez-vous / redémarrez-vous complètement votre ordinateur ou utilisez-vous l’arrêt hybride (par défaut sous Windows 8)? Après avoir basculé vers Windows 8, j'ai rencontré un problème similaire. Je suppose qu'un pilote a pris de plus en plus de mémoire vive et ne l'a pas rendu, même après avoir éteint et rallumé l'ordinateur. En quelques semaines, il a accumulé plusieurs gigaoctets. Alors maintenant, tous les quelques jours, je clique sur "redémarrer" ou maintenez la touche Maj enfoncée en cliquant sur "Arrêter" pour éteindre le PC. - Robert
Dans mon cas, il s'agissait de la mémoire "Driver Locked", réservée par Hyper-V pour avoir activé "Dynamic Memory". J'ai dû arrêter tous les ordinateurs virtuels, désactiver le paramètre et les redémarrer. Merci pour la suggestion de RAMMap. - Dagelf


Réponses:


Par ailleurs, vous devriez essayer de ne pas utiliser le terme "mémoire". Cela crée beaucoup de confusion. Si vous voulez parler de mémoire physique, dites "mémoire physique" ou "mémoire vive". Si vous parlez de mémoire virtuelle, dites-le. Si vous voulez dire backing store, dites-le.

Pourquoi la mémoire totale utilisée est-elle beaucoup plus élevée que la mémoire utilisée par tous les processus répertoriés, quelle que soit la façon dont je tente de les compter?

Parce que le système d'exploitation ne gaspille pas de mémoire physique (RAM) à moins qu'il n'ait pas le choix.

Comment Windows peut-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 qui contient 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 gratuite et contient des données qui pourraient être utiles (si le programme est exécuté à nouveau).

Quels processus peuvent éventuellement utiliser de la mémoire mais apparaissent maintenant sur la liste?

Il n'est pas utilisé par les processus.

Existe-t-il un logiciel qui peut fournir 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. De toute évidence, le premier est meilleur. Toute mémoire libre est perdue pour toujours - une machine de 4 Go ne peut pas utiliser 2 Go aujourd'hui pour utiliser 6 Go demain. Si vous pensez "je veux le faire gratuitement maintenant pour pouvoir l'utiliser plus tard", oubliez ça. Vous pouvez l'utiliser maintenant et l'utiliser plus tard.

Comment le fait de tuer un processus censé n'utiliser que quelques Mo peut-il libérer plusieurs Go?

Vous êtes à court de stockage de sauvegarde, pas de mémoire physique. Vous disposez d'une quantité de mémoire physique suffisante, mais d'une banque de sauvegarde insuffisante pour que le système d'exploitation continue à 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 pouvait avoir à 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 pourrait écrire sur 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 de pagination de bonne taille.

Les systèmes d'exploitation modernes écrivent beaucoup de chèques (magasin de sauvegarde prometteur) qui ne seront jamais encaissés (nécessitent de la RAM). Vous ne pouvez pas continuer à écrire des chèques (magasin de sauvegarde prometteur) même si vous avez beaucoup d’argent dans la banque (mémoire vive gratuite) si vous avez déjà écrit des tas de gros chèques qui pourraient ou non être encaissés. comme vous avez). Les fichiers de pagination ajoutent un magasin de sauvegarde, permettant au système d'exploitation de continuer à écrire des chèques.


8
2018-03-11 05:23



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 me dit seulement qu'il est hors de "mémoire" sans me donner aucune information. veux dire. (Je suppose que cela signifie RAM, pour les raisons que je précise dans le commentaire précédent, mais je ne suis pas certain.) Je préfère que vous utilisiez le vrai vocabulaire (que je peux rechercher si nécessaire) que des métaphores financières élaborées :) - Josh
-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 élevée que la mémoire utilisée par tous les processus répertoriés. - Bennett McElwee
Cette terminologie, où la mémoire est "utilisée" même si aucun programme ne l'utilise, est très différente du sens normal des mots comme "utilisé" et "libre" - peut-être que c'est la terminologie de Microsoft, pas la vôtre. Quoi qu’il en soit, supposons par exemple que 50% de la RAM est actuellement utilisée par les programmes en cours d’exécution et que 25% ne sont utilisés par aucun programme en cours d’exécution, mais contiennent des données qui pourraient être utiles à l’avenir. 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
@BennettMcElwee Il n'y a pas de bon moyen de réduire l'utilisation de la mémoire à un simple numéro, mais les utilisateurs l'exigent. Cela met les développeurs dans une position inconfortable - ils peuvent fournir un numéro qui n'est pas toujours utile ou ne fournit aucun numéro. La plupart des développeurs de systèmes d’exploitation et d’interfaces graphiques choisissent la première option - ils fournissent un nombre 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
@DavidSchwartz Votre réponse n'explique pas cela, elle le dit simplement. Pouvez-vous fournir des liens pour sauvegarder cette revendication spécifique? J'interprète la "mémoire physique XX%" comme signifiant que XX% de la RAM installée physiquement est actuellement utilisée et n'est pas disponible pour d'autres processus. Je crois que je suis validé par le fait qu'au-delà de 90%, le système devient sujet à des blocages, et 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