我正在使用 PerfView 来发现内存泄漏。
比较两个快照后,我注意到在 RefTree -> PerView 中的静态变量选项卡下。
我的 MyPageDependencyProperty
占了 Inc% 的 78.9%。MyPageDependencyProperty
不应该在那里,因为我关闭了它所属的 xaml 窗口。
我不使用会导致内存泄漏的 AddValueChanged
。DependencyProperty
显示 ObservableCollection<object>
。
有谁知道我可以解决这个问题吗?
谢谢
最佳答案
而不是像这样定义你的属性,它会创建一个静态的 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<...>();
}
你的问题会神奇地消失。 :)
关于c# - DependencyProperty 内存泄漏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19974061/