我在使用Firebird时遇到了一些麻烦。一些SQL查询收到错误“ Java堆空间”。
我修改了所有查询,似乎是正确的。但是,在进行了一些测试之后,我注意到错误仅在SQL查询没有返回的行数限制时发生。
如果我使用SELECT FIRST(10) field1, field2 from table
运行查询,它将从db返回结果,而没有FIRST()
,则会发生错误。
安装了Firebird的原始服务器内存有限,因此我只是在个人计算机上安装了Firebird,还原了备份并对其进行了测试。我当前的计算机上有很多ram和CPU来运行此简单查询,并且会出现相同的问题。
我的Firebird版本是2.5。我已经搜索了Firebird的官方文档,但没有发现任何有用的信息。有谁知道是什么原因导致此错误?
下面是测试期间的错误打印和我的计算机任务管理器。
[
答案 0 :(得分:1)
此问题与Firebird服务器本身的内存使用无关。您的查询工具是一个Java应用程序(看起来像DBeaver,但也可能是一个不同的基于Eclipse的应用程序),并且检索所有行会占用太多内存。当Java无法分配足够的内存时,这会导致OutOfMemoryError
出现消息“ Java堆空间”
您需要配置该应用程序以使用更多的内存,或者确定它是否可以检索页面中的行而不是获取全部。在自动提交模式下执行查询时,Jaybird(Firebird JDBC驱动程序)本身将检索所有行,因此也许您需要在事务中执行它。
或者,您已经发现:不要查询所有行。