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框架的一个问题,你可能会做错事.这不是不可能的,只是不太可能. 我想你需要检查GC.Collect()的工作原理. MSDN GC.Collect Method 备注 使用此方法尝试回收所有不可访问的内存. 所有对象,无论他们在记忆中多久,都被考虑收藏;但是,托管代码中引用的对象未被收集.使用此方法强制系统尝试回收最大可用内存量. 对于初学者,您不会告诉我们您在处理该内存的位置,即ListCollectionView(东西).你只是分配新的和分配新的,但你永远不会处理旧的.那么是的,它会像疯狂一样泄漏.直到GC运行并尝试收集. 如果你做同样的事情,你在这里展示一个字符串列表,它很有可能做同样的事情.但是对于你所展示的,我期望它泄漏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |