我总是在for循环的随机时间内收到GC开销限制错误,在该循环中,我遍历了从Pgres查询的200K +记录。如何防止此错误?
这是当我收到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));
}
答案 0 :(得分:0)
您是否尝试过增加堆内存大小?
尝试在运行时添加以下参数: java -Xmx ** m
我相信以上只是临时解决方案。另外,我建议您按顺序获取记录。
https://www.postgresql.org/docs/9.5/static/sql-createsequence.html