Как предотвратить java.lang.OutOfMemoryError: превышен лимит накладных расходов GC во время цикла for? - PullRequest
0 голосов
/ 02 ноября 2018

Я всегда получаю ошибки ограничения накладных расходов GC в случайные моменты времени в цикле for, где я прохожу 200K + записей, которые я запрашивал из Pgres. Как я могу предотвратить эту ошибку?

Вот когда я получаю OutOfMemoryError, просматривая 200K + записей:

 final List<CustomerCSV> customerCSVs = new ArrayList<>();
 for (Record record : results) {
     final Iterable<String> tags = 
     Iterables.transform(record.get(CUSTOMER.TAGS), (part) -> StringUtils.chop(part.toString().substring(1)));
     customerCSVs.add(new CustomerCSV(record.get("name"), record.get("email"), Joiner.on(",").join(tags));
}

1 Ответ

0 голосов
/ 02 ноября 2018

Вы пытались увеличить размер памяти кучи?

Попробуйте добавить следующие параметры во время работы: java -Xmx ** m

Я полагаю, что вышеизложенное является лишь временным решением. В качестве альтернативы я предлагаю вам получить записи в последовательности.

https://www.postgresql.org/docs/9.5/static/sql-createsequence.html

...