У меня есть программа, которая генерирует много данных и помещает их в очередь для записи, но проблема в том, что она генерирует данные быстрее, чем я сейчас пишу(, что приводит к максимальному объему памяти и начинает замедляться вниз). Порядок не имеет значения, так как я планирую разобрать файл позже.
Я немного осмотрелся и нашел несколько вопросов, которые помогли мне разработать мой текущий процесс(, но я все равно нахожу его медленным). Вот мой код на данный момент:
//...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%, но очередь заполняется 15 гигабайт, поэтому я предполагаю, что это будет файл размером 15 гигабайт и выше).
Самый быстрый способ записи больших объемов данных в текстовый файл Java(понял, что мне следует использовать буферизованную запись) Параллельная запись в файл в Java в Windows(заставил меня понять, что, возможно, многопоточная запись-не является отличная идея)