Silverlight WinDg内存发布问题

时间:2011-01-12 15:51:18

标签: debugging silverlight-4.0 windbg

我曾多次成功使用WinDbg来追踪和修复内存泄漏(或者更准确地说CLR无法收集已释放的对象),但是我遇到了一个特定的控件。控件显示在子窗口内,当窗口关闭时,对控件的引用仍然存在,不能进行垃圾回收。我已经解决了我认为可能导致泄漏的大多数问题,但受影响对象的!gcroot(至少对我来说)还不清楚仍然坚持这个对象。无论子窗口中显示的内容如何,​​输出始终相同:

DOMAIN(03FB7238):HANDLE(固定):79b12f8:Root:06704260(System.Object []) - >   05719f00(System.Collections.Generic.Dictionary 2[[System.IntPtr, mscorlib],[System.Object, mscorlib]])-> 067c1310(System.Collections.Generic.Dictionary 2 + Entry [[System.IntPtr,mscorlib],[System.Object,mscorlib]] []) - >   064d42b0(System.Windows.Controls.Grid) - >   064d4314(System.Collections.Generic.Dictionary 2[[MS.Internal.IManagedPeerBase, System.Windows],[System.Object, mscorlib]])-> 064d4360(System.Collections.Generic.Dictionary 2 + Entry [[MS.Internal.IManagedPeerBase,System.Windows],[System.Object,mscorlib]] []) - >   064d3860(System.Windows.Controls.Border) - >   064d4218(System.Collections.Generic.Dictionary 2[[MS.Internal.IManagedPeerBase, System.Windows],[System.Object, mscorlib]])-> 064d4264(System.Collections.Generic.Dictionary 2 + Entry [[MS.Internal.IManagedPeerBase,System.Windows],[System.Object,mscorlib]] []) - >   064d3bfc(System.Windows.Controls.ContentPresenter) - >   064d3d64(System.Collections.Generic.Dictionary 2[[MS.Internal.IManagedPeerBase, System.Windows],[System.Object, mscorlib]])-> 064d3db0(System.Collections.Generic.Dictionary 2 + Entry [[MS.Internal.IManagedPeerBase,System.Windows],[System.Object,mscorlib]] []) - >   064d3dec(System.Collections.Generic.Dictionary 2[[System.UInt32, mscorlib],[System.Windows.DependencyObject, System.Windows]])-> 064d3e38(System.Collections.Generic.Dictionary 2 + Entry [[System.UInt32,mscorlib],[System.Windows.DependencyObject,System.Windows]] []) - >   06490b04(Insurer.Analytics.SharedResources.Controls.HistoricalKPIViewerControl)

如果有人对可能存在的问题有任何想法,或者您需要更多信息,请告知我们。

亲切的问候, 克里斯

1 个答案:

答案 0 :(得分:1)

静态通过固定Object[]存储,因此它可以是IntPtr字典的静态引用,Object生根。你可以尝试查看字典,看看其他条目是否提供了任何有用的线索。

但是,考虑到IntPtr,我希望这是Silverlight运行时内部使用的东西。

我会查看根目录并查找应用程序使用的任何类型,并验证它们都没问题。