XML に 300 MB のデータを書き込まなければならない状況に直面しています。Streams を使用して、OutOfMemory
例外に直面することなくタスクを完全に実行しました。
ここで、FileOutputStream
オブジェクトを実際のデータに変換し、それString
を他のメソッドとして渡す必要があります。
試してみましたが、期待した結果が得られません。オブジェクトを文字列値に変換する方法をFileOutputStream
教えてください。
String が大きすぎて一度にメモリに保持しようとすると、使用しているリーダーに関係なく、常にOutOfMemoryErrorが発生します。
したがって、問題はリーダーではありません。問題は String オブジェクト (渡したいオブジェクト) です。
このような巨大なファイルを文字列変数として保存/渡す必要がある場合は、アーキテクチャに間違いなく問題があります。
あなたの間違いは、XML テキストを Java String 変数に入れようとしているということです。大きなオブジェクトをメモリに保存することは避けるべきです。これが重要なポイントです。
通常、テキストは圧縮率 0.1 ~ 0.01 で圧縮されます。
ZipOutputStream/ZipInputStream (または同様のライブラリ) を使用してみてください。これらは、ストリームのファイルへの読み取り/書き込みで問題なく動作します。
私の実践では、巨大な XML ファイルで完全に機能します。