我正在使用PerfView来发现内存泄漏。
在比较两个快照之后,我注意到在RefTree选项卡下 - > PerView中的静态变量。
我的MyPageDependencyProperty
占公司的78.9%。
MyPageDependencyProperty
不应该存在,因为我关闭了它所属的xaml窗口。
我不使用会导致内存泄漏的AddValueChanged
。
DependencyProperty
显示ObservableCollection<object>
。
有谁知道我可以解决这个问题吗?
谢谢
答案 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并跟踪将会发生的事情。