wpf - 将 ItemsControl 绑定到非 ObservableCollection 会导致内存泄漏吗?
问题描述
在研究 WPF 应用程序中内存泄漏的潜在原因时,我遇到了这篇文章:
https://oz-code.com/blog/net-c-tips/top-3-memory-leak-inducing-pitfalls-of-wpf-programming
本文提出以下未经证实的声明(它承认)绑定到集合而不是ObservableCollection
导致泄漏:
避免绑定到不是 ObservableCollection 的集合
我对这个的细节有点粗略。我还没有找到这个问题的根本原因,或者找到任何确凿的博客文章或 MSDN 文章,但仍然:在某些情况下,我发现当 ItemsControl 绑定到 ICollection 时发生内存泄漏'不是 ObservableCollection,将其更改为 ObservableCollection 解决了这个问题。
这是一个准确的说法吗?还是有其他更可能的解释?
我想知道所描述的 OP 是否可能是由绑定到未实现的对象引起的INotifyPropertyChanged
?(https://stackoverflow.com/a/18543350/3195477)。
解决方案
不完全是 OP 所要求的,但足够接近以提供帮助,我希望: https ://blog.jetbrains.com/dotnet/2014/09/04/fighting-common-wpf-memory-leaks-with-dotmemory/ states :
集合绑定泄漏
与 WPF 绑定泄漏类似的问题是集合绑定泄漏。如果绑定到未实现INotifyCollectionChanged接口的集合,WPF 将创建对该集合的强引用。因此,它在整个应用程序生命周期内都保留在内存中。
推荐阅读
- javascript - 查找具有指定人员数据的数字
- javascript - 在本机反应中找不到框架 UserMessagingPlatform.xcframework
- java - 如何处理重叠的弹簧靴启动器
- python - 即使在设置 pyenv 全局版本后也无法获取 python 版本
- ruby - 如何显示方法参数中的 nil?
- php - 查询 API 返回空响应
- elasticsearch - Elasticsearch 管道无法访问@myfield
- python - C++中模板的继承?
- html - django.urls.exceptions.NoReverseMatch:“rentals-detail”的反向,没有找不到参数。尝试了 1 种模式:['(?P
[0-9]+)/$'] - python - 无法使用 pip 安装 scikit-learn