【发布时间】:2018-02-06 22:13:00
【问题描述】:
我正在使用 hibernate 4.3.10、java 1.8 和 eclipse neon。 我一直在尝试在我的代码中执行以下语句。但是
java.lang.OutOfMemoryError: Java 堆空间
几分钟后被扔到第二行。
Query query = mySqlSession.createSQLQuery("select * from hops where processed is null");
List<Object[]> lis=query.list();
问题是这个查询返回了大约 200k 的结果,这导致了问题。我参考过 How to deal with "java.lang.OutOfMemoryError: Java heap space" error (64MB heap size)
从上述链接阅读解决方案后,我将内存更改为 2 GB。好像还是有问题。 有什么建议吗?
【问题讨论】:
-
是否有可能不将 200k 记录放入内存?
-
必须更改算法以仅使用当前记录(当前:将所有记录放入 RAM)。顺便说一句,为什么对经典查询使用休眠?
-
顺便说一句,您将获得
*所有列。它们都需要吗? -
我需要一次性处理所有这些记录。此外,我在 hops 表中没有顺序标识符,我可以选择说 10k 先处理它们,然后再处理下一个 10k。
标签: java mysql eclipse hibernate