我正在使用 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/

10-13 09:13