【发布时间】:2012-03-14 16:35:41
【问题描述】:
Like GuyFawkes,我想用MemoryStream来存储大量数据,但是一直遇到'out of memory'的异常。
TomTom 的回答是我想做的 - 使用不需要连续块的实现 - 但我想知道是否已经有一个免费的实现可用,以节省我自己编写一个?
有谁知道 MemoryStream 的一个很好的、免费的重新实现可以用于大型流的吗?
编辑:
MemoryMappedFile 解决方案非常有趣,我会在其他项目中记住它,但是正如 Henk 所说,它与 MemoryStream 的目标抽象相距甚远。具体来说,就是已知容量的要求。
替换应处理的数据在某些情况下会非常大,但在其他情况下则相对较小(不,我们不知道它会是什么,直到为时已晚;));此外,该类的许多实例将同时存在。
最终,使用 MemoryMappedFiles(确定每个文件的适当大小)所需的工作将等同于实现 TomTom 的解决方案。
【问题讨论】:
-
StringBuilder 中的一个类似问题已在 .NET 4 中通过更改实现以使用绳索来修复。谷歌搜索“内存流绳索”只会产生最后的程序员命中。 64 位操作系统是百元的解决方案。
-
好的,我认为缺少(酒吧 Eric 和 dtb 很有趣,但不是我所需要的)答案为“否”,因此我自己实现了它。它不是特别复杂,但如果有人能推荐最好的地方,我会上传它?
-
@HansPassant,绳索是一本有趣的读物,谢谢(即使谷歌搜索“内存流绳索”并不完全鼓舞人心!)对于我的项目,虽然我只需要数百兆字节的流,所以我的实现中的简单列表就足够了。
标签: c# .net memorystream