java - ResultSet 中的内存不足 allocLargeObjectOrArray

标签 java jdbc bea

我正在使用 JDBC 来获取大量数据。调用成功完成,但是当调用 resultSet.next() 时,出现以下错误:

java.lang.OutOfMemoryError: allocLargeObjectOrArray - Object size: 15414016, Num elements: 7706998

我尝试增加 JVM 内存大小,但这并不能解决问题。我不确定这个问题是否可以解决,因为我没有使用 JDBC 访问数据库,而是系统通过 JDBC 访问 BEA AquaLogic 服务。

有人遇到过这个错误吗?

最佳答案

请注意,在第一次 resultSet.next() 调用之前,结果可能尚未从数据库中读取,或者仍位于某个地方的另一个缓存结构中。

您应该尝试限制您的 Select 返回合理数量的结果,如果您需要所有数据,则可以重复调用,直到没有更多结果为止。

增加 JVM 内存大小不会有任何帮助,除非您可以确定 JDBC 调用返回的数据量有绝对限制。

此外,通过 JDBC 访问任何服务本质上都归结为使用 JDBC:)

另一种(不太可能)的可能性可能是您正在使用的 JDBC 驱动程序存在错误。如果可能的话尝试不同的实现并检查问题是否仍然存在。

关于java - ResultSet 中的内存不足 allocLargeObjectOrArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/940800/

相关文章:

java - 为什么 Maven 会警告我有关编码的问题?

java - 在由 Maven 驱动的简单演示应用程序的 JAR 中包含 Postgres 的 JDBC 驱动程序

java - wlst 嵌入模式不工作

java - JTextField 限制输入字符数,只接受数字

java - 类中封装是否设计得当

javascript - Azure Web应用程序在引用不存在的路径时抛出错误

sql-server - 在 Tomcat 7 上设置 SQL Server JDBC 连接池和资源

oracle - 仅在调试时出现 : java. io.IOException:现有连接被远程主机强制关闭

java - 学习 Java Portlet 规范 (JSR-168) 的最佳资源是什么?

java - 在java xquery处理器中使用OSB功能bea