我有一个程序可以生成大量数据并将其放入队列中进行写入,但问题是它生成的数据比我当前正在编写的更快(导致它达到最大内存并开始减速).订单无关紧要,因为我打算稍后解析文件.
我环顾了一下,发现了一些问题,帮助我设计了当前的过程(但我仍觉得它很慢).到目前为止,这是我的代码:
//...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的文件.