在Heroku服务器上调度PostgreSQL存储过程后发生Java内存不足异常

在Heroku服务器上调度PostgreSQL存储过程后发生Java内存不足异常,java,postgresql,heroku-postgres,Java,Postgresql,Heroku Postgres,我的Java应用程序部署在Heroku服务器上,它包含一个计划作业(这是PostgreSQL的存储过程) 调度程序成功启动过程执行,并打印日志 但是,一段时间后,java应用程序会导致异常 JAVA.LANG.OUTOFMEMORYERROR JAVA堆空间 并且它在未完成预定作业的情况下停止工作 我应该如何解决此错误 请查找异常屏幕截图 您忘了告诉我们一些小细节,比如您正在运行的SQL语句,但我猜: 您运行了一个包含大量结果集的语句,驱动程序试图将其全部捕获到RAM中 在这种情况下,应该使用P

我的Java应用程序部署在Heroku服务器上,它包含一个计划作业(这是PostgreSQL的存储过程)

调度程序成功启动过程执行,并打印日志

但是,一段时间后,java应用程序会导致异常

JAVA.LANG.OUTOFMEMORYERROR JAVA堆空间

并且它在未完成预定作业的情况下停止工作

我应该如何解决此错误

请查找异常屏幕截图


您忘了告诉我们一些小细节,比如您正在运行的SQL语句,但我猜:

您运行了一个包含大量结果集的语句,驱动程序试图将其全部捕获到RAM中

在这种情况下,应该使用
PreparedStatement
并使用
setPrepareThreshold
设置提取大小。然后将使用光标,您可以避免该问题

有关详细信息,请参阅。

也解释了这一点,特别是关于关闭自动提交的部分