DBから大量のファイルテキストを書き込もうとしていますが、約2ミリオンの行があります。 私は、PrintWriterが行(println())を印刷している間、ファイルサイズは常に0バイトであることを確認しました。ファイルは、ストリームが閉じられた後のサイズデータを持っています。 これは、すべてのデータが最初にメモリに保存され、ストリームが閉じるときに解放される原因になります。 私の場合、1ミリオンのデータ+ - 2.5GBのメモリが消費された後。アプリのクラッシュ リアルタイムでデータを書き込むことができ、メモリ消費を防ぐことができますか?Java PrintWriterの大きなメモリを消費
これは一例です:
File file = new File("file.txt");
PrintWriter out;
out = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(file)), "UTF-8"));
for (int i=0; i < 9999999; i++){
out.println("some data here");
}
out.close();
https://stackoverflow.com/questions/7753424/whats-the-most-efficient-way-to-write-large-text-file-in-javaを見ましたか? –
なぜPrintWriterの作成が複雑になっていますか?新しいPrintWriter( "file.txt")を使うことができます。そして、あなたの質問に答えるために、すべての 'n'行のflush()を使ってみてください。 – Tharun