2011-07-13 2 views
2

Ce qui suit est ma vérification gcroot de l'objet 0330e9a8. J'ai trouvé sa racine est une hanle avec son type est "RefCnt".que signifie HANDLE (RefCnt) dans windbg?

Comment pourrais-je obtenir le nombre de références réel de celui-ci. Et comment pourrais-je savoir quel objet a obtenu sa référence?

0:042> !GCRoot 0330e9a8 
Note: Roots found on stacks may be false positives. Run "!help gcroot" for 
more info. 
Scan Thread 5 OSTHread 534 
Scan Thread 8 OSTHread 60c 
Scan Thread 9 OSTHread 1120 
Scan Thread 10 OSTHread 1b30 
Scan Thread 11 OSTHread 52c 
Scan Thread 12 OSTHread 1da8 
Scan Thread 15 OSTHread 1cbc 
Scan Thread 19 OSTHread 1808 
Scan Thread 22 OSTHread 1b6c 
Scan Thread 23 OSTHread 1e70 
Scan Thread 0 OSTHread 1a34 
Scan Thread 32 OSTHread 1840 
DOMAIN(001C1050):HANDLE(RefCnt):d31460:Root:0330edf8(xxxxxxx)-> 
0330eedc(xxxxxxxxxxxx)-> 
0330e9a8(xxxxxxxxxxxxxx) 

Répondre

2

C'est un handle GC qui garde les objets .NET accessibles pour le code non managé.
par exemple: abonnement à un événement d'objet COM.

Quels types de racines verriez-vous normalement lors de l'exécution de! Gcroot et que signifient-ils?
ESP: ESP = Stack Extended pointeur, l'objet est en cours d'utilisation sur une pile
Strong: référence forte, typiquement une variable statique
WeakLn: Faible long manche, une référence faible qui est suivi par la finalisation (peut être ressuscitée)
WeakSh: faible manche court, une référence faible, ne peut pas être ressuscités
Post-it: objet épinglé, épinglé à une adresse spécifique, ne peut pas se déplacer lors de la collecte des ordures.
refcnt: Nombre de références, fait référence tant que le nombre de références est> 0.

Voir: .NET Debugging Demos Lab 7: Memory Leak - Review