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

Dupliquer 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 celle-ci. Je cherche une fuite de mémoire – mais je ne sais pas où. À présent, mon idée est de visualiser la mémoire utilisée dans la barre d’état afin de pouvoir la voir pendant que je travaille avec l’application et trouver la partie où le problème se produit, puis de la profiler.

Quelqu’un peut-il m’aider, comment puis-je récupérer la mémoire utilisée?

Vous pouvez utiliser la fonction suivante (le paramètre true indique au CPG de commencer par effectuer une collecte):

long memory = GC.GetTotalMemory(true); 

Vous pouvez essayer GC.GetTotalMemory :

Il récupère le nombre d’octets que l’on pense actuellement être alloués. Un paramètre indique si cette méthode peut attendre un court intervalle avant de retourner afin de permettre au système de collecter des déchets et de finaliser les objects.


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; 

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 existe de nombreux compteurs de mémoire ( http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx ), l’un d’eux contient les données dont vous avez besoin et je suppose que cela vous aidera à savoir quand L’application commence à utiliser plus de mémoire que nécessaire.

Toutefois, si vous avez besoin de mettre ces informations dans votre application, vous pouvez toujours utiliser des compteurs de performance. .NET a des classes dans l’espace de noms System.Diagnostics pour accéder à leurs données. Voir cet exemple: http://www.geekpedia.com/tutorial211_Using-Performance-Counters-in-Csharp.html

Pourquoi ne pas simplement surveiller l’utilisation de la mémoire avec TaskManager ou avec des outils plus avancés de Sysinternals et uniquement après avoir déterminé le stream de travail qui augmente anormalement l’utilisation de la mémoire, puis profilez l’application avec CLR Profiler ou d’autres.