大きなテキスト ファイルを ArrayDeque に読み込んでいます。
BufferedReader br = new BufferedReader(new FileReader(fname));
String line=null;
//allocate an ArrayDeque with enough room for 50M lines.
ArrayDeque<String[]> inMemory = new ArrayDeque<String[]>(50000000);
while((line=br.readLine())!=null){
String[] lineArr = line.split("\t");
inMemory.add(lineArr);
}
br.close();
私はそれを実行します
java -server -Xmx128g -cp target/stackoverflowquestion-1.0-SNAPSHOT-jar-with-dependencies.jar com.stackoverflow.Question
コードを実行しながら、 visualvmを開き、メモリがどのように消費されるかを確認します。
ヒープの使用量が定期的に減少するのはなぜですか?
編集: String[] を String に変更しました。今は起こりません。lineArrs は、各ループ反復で消えません。
BufferedReader br = new BufferedReader(new FileReader(fname));
String line=null;
//allocate an ArrayDeque with enough room for 50M lines.
ArrayDeque<String> inMemory = new ArrayDeque<String>(50000000);
while((line=br.readLine())!=null){
inMemory.add(line);
}
br.close();