バイナリデータをファイルに書き込むためにByteBuffers
とFileChannels
を使用しています。大きなファイルやそれを複数のファイルに対して連続して実行すると、OutOfMemoryError
例外が発生します。 NIOでBytebuffers
を使用しているのは壊れているので、避けてください。あなたはすでにこの種の問題に直面しており、大量のバイナリデータをJavaのファイルに効率的に保存するソリューションを見つけましたか?BytebuffersとNIOを使用しているときにOutOfMemoryErrorを回避するにはどうすればよいですか?
jvmオプション-XX:MaxDirectMemorySize
は行きますか?
マップされたすべてのバイトバッファ(私のアプリケーションまたはOS上のすべてのもの)に制限があることを指摘してくれてありがとうございます。私の場合、MappedByteBufferを周りのファイルに対して試しても私は愚かなOutOfMemoryExceptionを受け取ります1.6GB!しかし、なぜ?私の残りのスペースがどれだけ大きいかを調べるにはどうすればいいですか?助けて! – Zordid
@ Zordid Ummm ... 'MappedByteBuffer'(マップされたキーです!)は一般に' OutOfMemoryException'を引き起こしません。何かが壊れています。私はここでStackOverflowの新しい質問を作成することをお勧めします...コードで!誰かがあなたを助けることができるようです。 –