Java 无法从Oracle DB读取大型集合

Java 无法从Oracle DB读取大型集合,java,spring,oracle,performance,memory-management,Java,Spring,Oracle,Performance,Memory Management,我试图做的是从Oracle DB读取1048575记录。这个数字不是随机的,它是Excel文件中的最大行数减少了1(我想填充所有行+必须有一个标题行) 我的项目是建立在春季4。我使用org.springframework.data.querydsl.querydsl谓词执行器从数据库中获取数据,因此基本上需要分页、排序和querydsl谓词 当我尝试获取所有1048575条记录时,出现异常: java.lang.OutOfMemoryError:超出GC开销限制。在谷歌搜索了一段时间后,我没有发

我试图做的是从Oracle DB读取1048575记录。这个数字不是随机的,它是Excel文件中的最大行数减少了1(我想填充所有行+必须有一个标题行)

我的项目是建立在春季4。我使用
org.springframework.data.querydsl.querydsl谓词执行器
从数据库中获取数据,因此基本上需要分页、排序和
querydsl谓词

当我尝试获取所有1048575条记录时,出现异常:
java.lang.OutOfMemoryError:超出GC开销限制
。在谷歌搜索了一段时间后,我没有发现任何内存泄漏。在将所有记录分割成100k块之后,它将500k和600k之间的数据压碎

项目在Jetty 9.3上运行,参数如下:

-Xms512m -Xms2048m -Xmx2048m
数据库配置良好,具有适当的结构和所需的索引。假设它是不可变的


考虑到所有这些,我是否有可能在不增加堆大小的情况下读取数据?还有,excel文件的意义是什么(我是说谁需要在excel文件中输入1M行)?可能重复:我正在使用ApachePOI编写文件。我必须向用户保证,他们可以下载.xlsx格式的数据。请参阅副本中阮·罗哈斯的答案。您是说1已接受?在任何地方都看不到阮·罗哈斯