2010-09-27 6 views
1

J'utilise sos.dll pour trouver une fuite de mémoire dans wpf. ! Et j'ai trouvé un objet WPF n'a pas été libéré, alors j'ai essayé de savoir pourquoi il n'a pas été libéré en utilisant gcrootdébogage wpf en utilisant le problème sos.dll

il m'a donné un réchauffement:

S'il vous plaît noter que 6c369950 est pas un objet valide.

extrait de l'info de débogage

!dumpheap -type WPFUILib.MenuWindow 
Statistics: 
     MT Count TotalSize Class Name 
0c12ef4c  14   224 WPFUILib.MenuWindow+<>c__DisplayClass2b 
03fdf624  2   816 WPFUILib.MenuWindow 
Total 16 objects 

!gcroot 03fdf624 
Note: Roots found on stacks may be false positives. Run "!help gcroot" for 
more info. 
Please note that 03fdf624 is not a valid object. 
+0

Je * pense * que c'est parce que l'objet a été libéré. – jgauffin

Répondre

3

Vous essayez de trouver les racines pour un MethodTable (MT), mais !gcroot attend une adresse d'objet. Si vous voulez trouver les racines de vos deux instances de WPFUILib.MenuWindow vous devez d'abord localiser leur adresse. Utilisez !dumpheap -mt 03fdf624 pour lister les adresses, puis utilisez !gcroot sur celles-ci.

Questions connexes