加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ListCollectionView是否泄漏内存?

发布时间:2020-12-15 06:35:37 所属栏目:百科 来源:网络整理
导读:我一直在调查如何避免由视图模型强烈引用INotifyCollectionChanged事件引起的内存泄漏.我正在玩一个ListCollectionView来查看是否会为我处理它.我认为以下是泄漏记忆,我做错了什么? var stuff = new ObservableCollectionstring();while (true){ var result
我一直在调查如何避免由视图模型强烈引用INotifyCollectionChanged事件引起的内存泄漏.我正在玩一个ListCollectionView来查看是否会为我处理它.我认为以下是泄漏记忆,我做错了什么?
var stuff = new ObservableCollection<string>();
while (true)
{
    var result = new ListCollectionView(stuff);
    // Just to keep make sure that the memory I'm seeing 
    // isn't waiting to be GC'd
    GC.Collect(); 
}

解决方法

我最初发表了这个评论,但我认为这是一个更好的答案,所以…

a)如果你确定你发现了.NET框架的一个问题,你可能会做错事.这不是不可能的,只是不太可能.
b)GC.Collect()不会做你正在想的事情.

我想你需要检查GC.Collect()的工作原理.

MSDN GC.Collect Method

备注

使用此方法尝试回收所有不可访问的内存.

所有对象,无论他们在记忆中多久,都被考虑收藏;但是,托管代码中引用的对象未被收集.使用此方法强制系统尝试回收最大可用内存量.

对于初学者,您不会告诉我们您在处理该内存的位置,即ListCollectionView(东西).你只是分配新的和分配新的,但你永远不会处理旧的.那么是的,它会像疯狂一样泄漏.直到GC运行并尝试收集.

如果你做同样的事情,你在这里展示一个字符串列表,它很有可能做同样的事情.但是对于你所展示的,我期望它泄漏.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读