DependencyProperty内存泄漏

时间:2013-11-14 09:35:24

标签: c# wpf c#-4.0

我正在使用PerfView来发现内存泄漏。

在比较两个快照之后,我注意到在RefTree选项卡下 - > PerView中的静态变量。 我的MyPageDependencyProperty占公司的78.9%。

MyPageDependencyProperty不应该存在,因为我关闭了它所属的xaml窗口。

我不使用会导致内存泄漏的AddValueChanged

DependencyProperty显示ObservableCollection<object>

有谁知道我可以解决这个问题吗?

谢谢

2 个答案:

答案 0 :(得分:4)

而不是像这样定义你创建静态ObservableCollection的属性。

public static readonly DependencyProperty SomePropertyProperty  = DependencyProperty.Register(typeof(..), typeof(..),....,.... , new ObservableCollection<...>());

你应该这样做:

public static readonly DependencyProperty SomePropertyProperty = DependencyProperty.Register(typeof(..), typeof(..),...., null);

public MyControl()
{
   this.SomeProperty = new ObservableCollection<...>();
}

你的问题会神奇地消失。 :)

答案 1 :(得分:-3)

这可能是因为CLR在某处有到该对象的链接而且它不是Dispose。尝试force Garbage collector to run并跟踪将会发生的事情。