Как быстрее всего записать большой объем данных из памяти в файл?

У меня есть программа, которая генерирует много данных и помещает их в очередь для записи, но проблема в том, что она генерирует данные быстрее, чем я сейчас пишу(, что приводит к максимальному объему памяти и начинает замедляться вниз). Порядок не имеет значения, так как я планирую разобрать файл позже.

Я немного осмотрелся и нашел несколько вопросов, которые помогли мне разработать мой текущий процесс(, но я все равно нахожу его медленным). Вот мой код на данный момент:

//...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(заставил меня понять, что, возможно, многопоточная запись-не является отличная идея)

6
задан Community 23 May 2017 в 12:11
поделиться