我想要做的是从Oracle DB中读取 1,048,575 条记录。该数字不是随机的,它是Excel文件中最大行数减少1(我希望所有行都填充+必须有标题行)。
我的项目是在Spring 4上构建的。我使用org.springframework.data.querydsl.QueryDslPredicateExecutor
从数据库中获取数据,因此基本上需要分页,排序和QueryDslPredicates
。
当我试图获得所有1,048,575条记录时,我得到了异常:
java.lang.OutOfMemoryError: GC overhead limit exceeded
。谷歌搜索一段时间后(for example there)我没有发现任何内存泄漏。在将所有记录分成100k块之后,它在500k和600k之间压碎。
Project在Jetty 9.3上运行,带有以下参数:
-Xms512m -Xms2048m -Xmx2048m
DB配置良好,具有适当的结构和所需的索引。让我们说它是不可改变的。
考虑到所有这些因素,我是否有可能在不增加堆大小的情况下实际读取数据 ?