Выпуск памяти Silverlight WinDg - PullRequest
1 голос
/ 12 января 2011

В ряде случаев я успешно использовал WinDbg для отслеживания и устранения утечек памяти (или, точнее, неспособности CLR собирать освобожденный объект), но я застрял с одним конкретным элементом управления.Элемент управления отображается в дочернем окне, и когда окно закрывается, ссылка на элемент управления остается и не может быть собрана сборщиком мусора.Я решил то, что, по моему мнению, является большинством проблем, которые могли вызвать утечку, но! Gcroot затронутого объекта не ясен (по крайней мере мне) относительно того, что все еще держится за этот объект.Выходное значение всегда одинаково, независимо от содержимого, представляемого в дочернем окне:

ДОМЕН (03FB7238): РУЧКА (закреплено): 79b12f8: Корень: 06704260 (System.Object []) -> 05719f00 (система.Collections.Generic.Dictionary 2[[System.IntPtr, mscorlib],[System.Object, mscorlib]])-> 067c1310(System.Collections.Generic.Dictionary 2 + Запись [[System.IntPtr, mscorlib], [System.Object, mscorlib]] []) -> 064d42b0 (System.Windows.Controls.Grid) -> 064d4314 (система.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 Ответ

1 голос
/ 12 января 2011

Статика хранится через закрепленный Object[], так что это может быть статическая ссылка на словарь IntPtr, Object с его корнем.Вы можете попытаться заглянуть в словарь, чтобы увидеть, если другие записи предоставляют какие-либо полезные подсказки.

Однако, учитывая IntPtr, я ожидал бы, что это то, что среда выполнения Silverlight использует для внутреннего использования.

Я бы прошел через корни и посмотрел бы все типы, используемые приложением, и проверил бы, что все они в порядке.

...