我正在使用 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/