为了账号安全,请及时绑定邮箱和手机立即绑定

查询 Firebird 数据库导致 Java 堆空间错误

查询 Firebird 数据库导致 Java 堆空间错误

FFIVE 2021-09-03 21:29:59
我在使用 Firebird 时遇到了一些麻烦。一些 SQL 查询收到错误“Java 堆空间”。我已经修改了所有查询,似乎是正确的。但是,在做了一些测试之后,我注意到只有当 SQL 查询没有返回行数限制时才会发生错误。如果我使用 运行查询SELECT  FIRST(10) field1, field2 from table,它会从 db 返回结果,如果没有FIRST(),则会发生错误。原来安装 Firebird 的服务器内存有限,所以我只是在我的个人电脑上安装了 Firebird,恢复了备份并测试了它。我当前的计算机有很多内存和 CPU 来运行这个简单的查询,并且发生了同样的问题。我的 Firebird 版本是 2.5。我在 Firebird 官方文档中搜索过,但没有找到任何有用的信息。任何人都知道可能导致此错误的原因是什么?以下是测试期间的错误打印和我的计算机任务管理器。
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

此问题与 Firebird 服务器本身的内存使用无关。您的查询工具是一个 Java 应用程序(它看起来像 DBeaver,但也可能是一个不同的基于 Eclipse 的应用程序),检索所有行会消耗太多内存。当 Java 无法分配足够的内存时,这会导致OutOfMemoryError带有消息“Java 堆空间”

您要么需要将该应用程序配置为使用更多内存,要么确定它是否可以检索页面中的行而不是获取所有行。在自动提交模式下执行查询时,Jaybird(Firebird JDBC 驱动程序)本身将检索所有行,因此您可能需要在事务中执行它。

或者,正如您已经发现的:不要查询所有行。


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信