1

我正在使用 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.
4

1 回答 1

3

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

于 2010-10-07T06:52:47.680 回答