1

我正在尝试从我的表中获取数百万数据,并且我正在使用 Java Play Framework 2.0,但存在一些问题。当我对查询设置限制时,它运行良好,如果我要求所有数据,它会抛出错误,例如

Exception in thread "pool-3-thread-1" java.lang.OutOfMemoryError: Java heap space

有人能帮我一下吗?

4

2 回答 2

2

从手册中引用:

默认情况下,驱动程序一次收集查询的所有结果。这对于大型数据集可能很不方便,因此 JDBC 驱动程序提供了一种将 ResultSet 基于数据库游标并仅获取少量行的方法

(强调我的)

该手册详细描述了如何配置驱动程序以不将所有内容加载到内存中:http:
//jdbc.postgresql.org/documentation/head/query.html#query-with-cursor

于 2013-04-17T13:07:51.300 回答
0

java.sql.Statement.setFetchSize 可能会有所帮助,具体取决于您的数据库。我不熟悉 Play Framework,但您可以使用 JDBC 设置获取大小。

请参阅Statement.setFetchSize(nSize) 方法的真正作用是什么?

于 2013-04-17T15:19:07.090 回答