我的Java应用程序已部署在Heroku Server上,并且包含一个计划的作业(这是PostgreSQL的存储过程)。
调度程序成功启动了过程执行,并记录了日志。
但是,一段时间后,Java应用程序导致异常
JAVA.LANG.OUTOFMEMORYERROR Java堆空间
,并且在未完成预定作业的情况下停止工作。
该怎么办才能解决此错误?
请查找例外屏幕截图
答案 0 :(得分:0)
您忘了告诉我们一些小细节,例如您正在运行的SQL语句,但这是我的猜测:
您运行了一个包含较大结果集的语句,驱动程序尝试将所有结果都塞入RAM。
在这种情况下,您应该使用PreparedStatement
并使用setPrepareThreshold
来设置获取大小。然后将使用光标,您可以避免该问题。
有关详细信息,请参见the documentation。