c# - 列出使用多个 block

标签 c# .net

List 是数组的包装器。当您将项目添加到列表时,它会创建越来越大的隐藏数组(并且以前的数组被垃圾收集)。但是,如果您在某个时候处理大型列表,即使由于内存碎片而有可用内存,您也会得到 OutOfMemoryException。我正在寻找一个 ICollection 实现,它可以与类似于 MemoryTributary 的一组数组一起工作。

更新。

我在这里找到了 BigArray 的实现:

http://blogs.msdn.com/b/joshwil/archive/2005/08/10/450202.aspx .

虽然它试图解决其他问题(创建 >2GB 大小的数组),但它也解决了我的问题。但是这个实现并不完整,甚至无法编译。所以如果我找不到更好的,我会改进这个并使用它。

最佳答案

如果您对最大大小有粗略估计,则可以使用容量初始化列表。据我所知,这将避免大量垃圾收集的发生(使用旧的较小数组),这也可能避免内存碎片。

关于c# - 列出使用多个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750540/

相关文章:

c# - 通过 Unity 启动时,Visual Studio Code .NET 框架无法工作

c# - 什么会导致 MVC4 Controller 只返回状态代码而不返回局部 View ?

c# - 可空类型和 .HasValue 仍然抛出 Null 异常

.net - 带有 .Net OR/M 的可配置表前缀?

c# - 如何将 IP 摄像机流导入 C#?

c# - 防止 WinForms PictureBox 动画 GIF 在处理过程中暂停?

c# - 如何替换 .NET 中字符串的*第一个实例*?

具有不同泛型参数的 C# 泛型返回类型

c# - Visio 和 C# 编程

c# - 执行包含 GO 语句的批处理 T-SQL 脚本会抛出异常