我有一个程序可以生成大量数据并将其放入队列中以进行写入,但问题是它生成数据的速度比我当前正在写入的速度快(导致它达到最大内存并开始变慢)。顺序无关紧要,因为我打算稍后解析文件。
我环顾四周,发现了一些帮助我设计当前流程的问题(但我仍然觉得它很慢)。到目前为止,这是我的代码:
//...background multi-threaded process keeps building the queue..
FileWriter writer = new FileWriter("foo.txt",true);
BufferedWriter bufferWritter = new BufferedWriter(writer);
while(!queue_of_stuff_to_write.isEmpty()) {
String data = solutions.poll().data;
bufferWritter.newLine();
bufferWritter.write(data);
}
bufferWritter.close();
我对编程很陌生,所以我可能会评估这个错误(可能是我使用 EC2 时的硬件问题),但是是否可以非常快速地将队列结果转储到文件中,或者如果我的方法还可以,我可以改进它吗不知何故?由于顺序无关紧要,写入多个驱动器上的多个文件是否更有意义?线程会使它更快吗?等等。我不确定最好的方法,任何建议都会很棒。我的目标是保存队列的结果(抱歉没有输出到 /dev/null :-) 并让我的应用程序的内存消耗尽可能低(我不是 100% 确定,但队列填满了 15gig,所以我'我假设它将是一个 15gig+ 文件)。
在文本文件 Java 中写入大量数据的最快方法(意识到我应该使用缓冲写入器) 在 Windows 上用 Java 并发文件写入(让我看到多线程写入可能不是一个好主意)