Comment calculer le jeu de travail privé (de mémoire)?
Comment puis-je calculer le privé ensemble de travail de mémoire à l'aide de C#? Je suis intéressé par l'produit à peu près les mêmes chiffres que taskmgr.exe
.
Je suis en utilisant le Process
espace de noms et des méthodes d'utilisation/données comme WorkingSet64
et PrivateMemorySize64
, mais ces chiffres sont à 100 MO ou plus à la fois.
OriginalL'auteur sholsapp | 2010-04-09
Vous devez vous connecter pour publier un commentaire.
C'est un très variable nombre, vous ne pouvez pas calculer. Le gestionnaire de mémoire de Windows constamment des swaps de pages et de la mémoire vive. TaskMgr.exe il obtient à partir d'un compteur de performance. Vous pouvez obtenir le même nombre comme ceci:
Faire attention, le nombre n'a pas vraiment beaucoup de sens, il va tomber quand d'autres procédés de commencer et de concourir pour la RAM.
Non, ce n'est pas ce que le nombre de moyens. Vous êtes à la recherche pour les "Octets Privés", le montant de virtual mémoire utilisée par un processus qui ne peut pas être partagée par d'autres processus.
Alors que tous dit est correct, je voulais ajouter, que l'utilisation de la
ProcessName
à la recherche de la correspondance de contre exemple n'est pas suffisant. Si vous avez plusieurs processus avec le même (par ex. svchost.exe), puis les noms de compteur sera "svchost#1", "svchost#2", etc. Vous devez faire correspondre via la "ID" Processus de comptoir, qui fait également partie de la catégorie de processus, etProcess.ID
.OriginalL'auteur Hans Passant
Pour les futurs utilisateurs, voici ce que j'avais à faire pour vous assurer d'obtenir le Jeu de Travail Privé pour les processus qui peut disposer de plusieurs instances. J'appelle
CurrentMemoryUsage
, qui est le processus approprié le nom deGetNameToUseForMemory
. J'ai trouvé cette boucle à être lent, même avec de filtrer les résultats, si je le pouvais. Donc, c'est pourquoi vous voyezGetNameToUseForMemory
à l'aide d'un dictionnaire pour la mise en cache le nom.u as raison! tks
OriginalL'auteur Justin Pihony
Peut-être
GC.GetTotalMemory
va fournir les données dont vous avez besoin?OriginalL'auteur Tomas Voracek