可以将ItemsControl绑定到non-ObservableCollection导致内存泄漏吗?

问题描述

在研究WPF应用程序中内存泄漏的潜在原因时,我遇到了这篇文章

https://oz-code.com/blog/net-c-tips/top-3-memory-leak-inducing-pitfalls-of-wpf-programming

本文提出了以下未经证实的主张(它承认),即与9200:9200以外的其他集合的绑定会导致泄漏:

@H_404_8@

避免绑定到不是ObservableCollection的集合


我对此内容有些粗略。我还没能 找到此问题的根本原因,或找到任何有力的博客 或MSDN文章,但仍然:在某些情况下,我发现 将ItemsControl绑定到ICollection时发生内存泄漏 这不是ObservableCollection,而是将其更改为 ObservableCollection解决了这个问题。

这是准确的陈述吗?还是有其他更可能的解释?


我想知道,所描述的OP是否可能是由于绑定到未实现8200:9200的对象引起的? (https://stackoverflow.com/a/18543350/3195477)。

解决方法

与OP的要求不完全相同,但希望可以帮助到我,https://blog.jetbrains.com/dotnet/2014/09/04/fighting-common-wpf-memory-leaks-with-dotmemory/指出:

集合绑定泄漏

与WPF绑定泄漏类似的问题是 集合绑定泄漏。如果绑定到一个集合 没有实现 INotifyCollectionChanged 接口,WPF会创建一个 对此收藏的强烈引用。结果,它保留在内存中 在整个应用程序生命周期中。