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

时间:2018-09-19 10:07:44

标签: java postgresql heroku-postgres

我的Java应用程序已部署在Heroku Server上,并且包含一个计划的作业(这是PostgreSQL的存储过程)。

调度程序成功启动了过程执行,并记录了日志。

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

  

JAVA.LANG.OUTOFMEMORYERROR Java堆空间

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

该怎么办才能解决此错误?

请查找例外屏幕截图

Please Find Exception Screenshot

1 个答案:

答案 0 :(得分:0)

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

您运行了一个包含较大结果集的语句,驱动程序尝试将所有结果都塞入RAM。

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

有关详细信息,请参见the documentation