web-dev-qa-db-fra.com

Comment obtenir la quantité de mémoire utilisée par une application

Duplicata possible:
Comment obtenir de la mémoire disponible ou utilisée en C #

Je souhaite visualiser la mémoire utilisée par mon application dans la barre d'état de mon application. Je cherche une fuite de mémoire - mais je ne sais pas où. Maintenant, mon idée est de visualiser la mémoire utilisée dans la barre d'état afin que je puisse la voir pendant que je travaille avec l'application et trouver la partie, où le problème se produit, puis je peux profiler cela.

Quelqu'un peut-il m'aider, comment puis-je obtenir la mémoire utilisée.

27
BennoDual

Vous pouvez utiliser la fonction suivante (le paramètre true indique au GC d'effectuer d'abord une collecte):

long memory = GC.GetTotalMemory(true);
36
geniaz1

Tu peux essayer GC.GetTotalMemory:

Il récupère le nombre d'octets actuellement pensé pour être alloué. Un paramètre indique si cette méthode peut attendre un court intervalle> avant de revenir, pour permettre au système de collecter les ordures et de finaliser> les objets.


ou

using System.Diagnostics;

Process currentProc = Process.GetCurrentProcess();

Une fois que vous avez une référence au processus en cours, vous pouvez déterminer son utilisation de la mémoire en lisant la propriété PrivateMemorySize64.

long memoryUsed = currentProc.PrivateMemorySize64;
13
Rahul Ranjan

Si vous souhaitez surveiller la mémoire utilisée par votre application, vous n'avez pas besoin d'écrire de code pour cela. Utilisez simplement les compteurs de performance de Windows ( http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters ). Ils vous fourniront les informations dont vous avez besoin avec des graphiques! Il y a beaucoup de compteurs de mémoire ( http://msdn.Microsoft.com/en-us/library/x2tyfybc.aspx ), l'un d'eux aura les données dont vous avez besoin et je suppose que ça va vous aider à savoir quand votre application commence à utiliser plus de mémoire qu'elle ne le devrait.

Toutefois, si vous devez mettre ces informations dans votre application, vous pouvez toujours utiliser des compteurs de performances. .NET a des classes dans l'espace de noms System.Diagnostics pour accéder à leurs données. Voir cet exemple: https://weblog.west-wind.com/posts/2014/Sep/27/Capturing-Performance-Counter-Data-for-a-Process-by-Process-Id

4
Fabio