Like GuyFawkes、私は大量のデータを格納するためにMemoryStreamを使用したいと思いますが、「メモリ不足」の例外に遭遇し続けます。
TomTomの答えは私がしたいことです - 連続したブロックを必要としない実装を使用してください - しかし、私は自分自身を書いて私を保存するために、既に無料の実装が利用可能かどうか疑問に思っていますか?連続したメモリを使用しないオープンソースのMemoryStream実装がありますか?
大きなストリームで動作するMemoryStreamの良い、無料の再実装を知っている人はいますか?
EDIT:それはあまりにも遠くのMemoryStreamが目指しているの抽象化から外れる、ヘンクが言うしかしとして、
メモリマップトファイルのソリューションは非常に興味深いですし、私は他のプロジェクトのためにそれを覚えることでしょう。具体的には、既知容量の要件。
交換するデータは、場合によっては非常に大きいものですが、比較的小さいものもあります(それが遅すぎるまではわかりません)。さらに、クラスの多くのインスタンスが同時に存在することになります。 最終的には、MemoryMappedFilesを使用して(それぞれに適切なサイズを決定するために)必要な作業は、TomTomのソリューションを実装する作業と同等です。
のStringBuilderで同様の問題は、ロープを使用するように実装を変更することによって、.NET 4に固定しました。グーグル "memorystreamロープ"は、最後にあるプログラマーのヒットを生成するだけです。 64ビットオペレーティングシステムは100ドルのソリューションです。 –
OK、私は欠けている(バーEricとdtbは面白かったけど、私が必要としていたものではない)答えは「いいえ」と答え、自分でそれを実装しました。それは特に複雑ではないが、もし誰かが最高の場所を提案できるなら、私はそれをアップロードするだろうか? – sebf
@HansPassant、ロープはおもしろい読書です。ありがとうございました(グーグル "memorystream rope"はまさにインスピレーションを得ていません!)私のプロジェクトでは、数百メガバイトのオーダーのストリームしか必要としませんでした。 – sebf