отладка wpf с помощью проблемы sos.dll - PullRequest
1 голос
/ 27 сентября 2010

Я использую sos.dll, чтобы найти утечку памяти в wpf.И я обнаружил, что объект wpf не был освобожден, затем я попытался выяснить, почему он не был выпущен, с помощью ! Gcroot

он дал мне потепление, которое:

Обратите внимание, что 6c369950 не является допустимым объектом.

фрагмент информации об отладке

!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.

1 Ответ

3 голосов
/ 07 октября 2010

Вы пытаетесь найти корни для MethodTable (MT), но !gcroot ожидает адрес объекта. Если вы хотите найти корни для ваших двух экземпляров WPFUILib.MenuWindow, вам нужно сначала найти их адреса. Используйте !dumpheap -mt 03fdf624 для отображения адресов, а затем используйте !gcroot для них.

...