应用:
- WPF应用程序由一个上方的文本框和一个下方的列表框组成
- 用户在文本框中输入字符串以查找员工,搜索结果显示在列表框中
- 列表框使用数据模板显示元素(显示员工姓名、部门、电话和缩略图.)
实现:
- 在应用程序启动时,我查询数据库并检索所有员工及其相关信息,以在列表框中显示。这些数据一直保留在内存中。
- 应用程序启动后,所有可搜索数据都在内存中,并且搜索几乎是瞬时的。所有搜索都在已经在内存中的数据上执行。
- 使用数据模板在列表框中显示搜索结果。每个列表框项都显示缩略图、姓名、电话、部门等信息。
问题:
- 在启动时,内存使用量约为200MB。
- 当通过新搜索或简单地滚动列表框更改数据时,内存消耗会增加。
- 当用户缓慢滚动列表框时,内存增长得更快。随着滚动的上下,内存很快达到1GB。
没有代码手动创建控件-所有都通过数据绑定完成。
为什么会出现这种情况?我该怎么解决?请帮忙!
更新: 我发现问题不是内存泄漏。问题在于列表框正在创建对象来显示员工的图像,并且在列表框项离开窗口后没有为垃圾收集器释放。 CleanUpVirtualizedItem事件如我所预期地发生,但内存仍未释放。有任何想法吗?