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

Querying Firebird database results in Java Heap Space error

我在使用 Firebird 时遇到了一些问题。一些 SQL 查询出现错误 "Java Heap Space"。

我修改了所有查询,看来是对的。但是,在做了一些测试之后,我注意到只有当 SQL 查询没有返回行的限制时才会发生错误。 如果我 运行 使用 SELECT FIRST(10) field1, field2 from table 的查询,它 returns 来自数据库的结果,没有 FIRST(),就会发生错误。

原来安装Firebird的服务器内存有限,所以我就在个人电脑上安装了Firebird,还原备份测试了一下。我当前的计算机有很多 ram 和 CPU 到 运行 这个简单的查询和同样的问题发生。

我的火鸟版本是2.5。我在 Firebird 官方文档中进行了搜索,但没有找到任何有用的信息。任何人都知道是什么导致了这个错误?

下面是测试期间的错误打印和我的电脑任务管理器。

[

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

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

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