使用sos.dll问题调试wpf

时间:2010-09-27 07:19:40

标签: wpf debugging memory-leaks sos

我正在使用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 个答案:

答案 0 :(得分:3)

您正在尝试查找MethodTable(MT)的根,但!gcroot需要一个对象地址。如果要查找两个WPFUILib.MenuWindow实例的根,则需要先找到它们的地址。使用!dumpheap -mt 03fdf624列出地址,然后对其使用!gcroot