2009-01-17 7 views
3

Comment puis-je vérifier par programme, combien de mémoire mon programme a actuellement alloué? Je l'ai besoin pour une application ASP .NET, mais je soupçonne que la solution est générale pour tous les types d'applications .NET. Idéalement, l'opération pour obtenir la quantité de mémoire actuellement allouée devrait être rapide, car je devrai l'interroger souvent.Comment obtenir la mémoire totale allouée par une application (ASP) .NET par programmation?

EDIT: Merci pour vos réponses. Je vais utiliser GC.GetTotalMemory pour cette tâche, car je dois l'utiliser pour une application ASP .NET. Après quelques expériences, j'ai déterminé qu'il est assez rapide et précis pour mes besoins. La suggestion d'utiliser la propriété Process 'PrivateMemorySize64 fonctionnera également en général; mais comme indiqué dans les réponses, pour une application ASP.NET il y aura souvent plusieurs AppDomain en cours d'exécution dans un processus. J'ai besoin du total de mémoire par AppDomain.

Répondre

6

Il existe une méthode GC.GetTotalMemory mais cela ne vous donnera qu'une approximation. Est-ce assez?

Si vous l'appelez avec GC.GetTotalMemory(false) il sera plus rapide ...

1

Vous pouvez également appeler PrivateMemorySize64 (ou virtuel si vous préférez) de la classe Process. Toutefois, sachez que les numéros sont mis en cache et actualisés uniquement lorsque vous appelez Actualiser.

2

Et aussi noter que pour asp.net c'est très commun d'avoir plus d'une application dans un processus. Cela limite l'utilité de PrivateMemorySize64. Le GC.GetTotalMemory est par domaine d'application afaik.

Questions connexes