我正在处理一个巨大的循环static void main(String[] args)
。这个循环处理一些我想进入 CSV 的数字原语,其中 CSV 中的每一行对应于循环中的一个迭代。
我的目标是动态编写这些原语,以便在每次迭代结束时它们可以被垃圾收集并基本上被遗忘。最糟糕的事情是将这些存储在内存中直到循环结束,因为循环很长。
我写了一个试图做到这一点的类,粘贴在下面。问题:CSV 的每一行是否都存储到内存中,然后在循环结束时写入磁盘?如果是这样,我如何使它在每次循环迭代时都发生磁盘写入以释放内存(最好以快速的方式)?
public static void main(String[] args) throws Exception {
WriteCSV csvWriter = new WriteCSV("src","Hello.csv")
for(int i = 0 ; i < 1000 ; ++i) { //Much bigger in real-world case
csvWriter.writeRow(i);
}
csvWriter.close(); //Does all i between {1,2,...,1000} get GC'd here or dynamically in the above loop???
}
CSV 写入类在循环中动态写入:
class WriteCSV {
private FileWriter fstream;
private BufferedWriter out;
public WriteCSV(String directory, String filename) throws IOException {
File file = new File(directory, filename);
this.fstream = new FileWriter(file);
this.out = new BufferedWriter(this.fstream);
}
public void writeRow(int newRow) throws IOException {
this.out.write(String.valueOf(newRow));
this.out.newLine();
}
public void close() throws IOException {
this.out.close();
}
}