c# – ListCollectionView是否泄漏内存?

前端之家收集整理的这篇文章主要介绍了c# – ListCollectionView是否泄漏内存?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在调查如何避免由视图模型强烈引用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运行并尝试收集.

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

猜你在找的C#相关文章