我正在将一个大文本文件读入一个 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并观察内存是如何被用完的:
为什么使用的堆数量会周期性减少?
编辑:我将字符串 [] 更改为字符串。现在它没有发生。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();