2008-10-14 15 views
1

Je me demande s'il existe un moyen de programmer ou d'utiliser un outil tiers (profileur?) Pour obtenir un aperçu du nombre d'instances d'une classe actuellement actives dans AppDomain (y compris ou à l'exclusion des classes dérivées), et encore mieux, où ils sont alloués (pas sûr si c'est même possible).Comptage des instances d'une classe dans AppDomain

Je sais que je pourrais changer mes propres classes pour inclure un compteur de fonctionnement en quelque sorte, mais je le veux aussi pour les classes (gérées) que je ne contrôle pas.

Est-ce encore possible? Quelques conseils ou mots-clés seraient utiles :)

Répondre

4

Je pense que ce que vous voudriez utiliser est SOS et le Windows Debugging Toolkit.

Il y a un super blog de Tess Ferandez qui contient beaucoup d'informations sur son utilisation.

http://blogs.msdn.com/tess/

1

Je suis presque hésité à répondre car il doit y avoir un tas de façons plus facile, mais en utilisant adplus de prendre une décharge pendre, puis utilisez WinDbg avec Fils de grève pour naviguer dans le fichier de vidage.

Vous pouvez également obtenir un profiler qui vous aidera avec quelques analyses rudimentaires sur le hang hang.

1

Je ne pense pas qu'il y ait une manière ordonnée de faire cela avec la réflexion de la même manière que vous pouvez énumérer des classes ou des méthodes, par exemple. CLR Profiler va se connecter à un processus, puis indiquer le nombre d'instances de chaque classe allouées. En théorie, vous pouvez écrire votre propre code contre le même API que CLR Profiler utilise, mais je suppose que ce serait beaucoup d'efforts et pas nécessairement éclairant.

Questions connexes