问题描述
在研究WPF应用程序中内存泄漏的潜在原因时,我遇到了这篇文章:
https://oz-code.com/blog/net-c-tips/top-3-memory-leak-inducing-pitfalls-of-wpf-programming
本文提出了以下未经证实的主张(它承认),即与9200:9200
以外的其他集合的绑定会导致泄漏:
避免绑定到不是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会创建一个 对此收藏的强烈引用。结果,它保留在内存中 在整个应用程序生命周期中。