我的Java应用程序部署在Heroku Server上,它包含一个预定作业(PostgreSQL的存储过程)。
调度程序成功启动过程执行并且还打印日志。
但是,经过一段时间后,java应用程序会导致异常
JAVA.LANG.OUTOFMEMORYERROR java堆空间
它会在没有完成预定作业的情况下停止工作。
我该怎么做才能解决这个错误?
请查找例外截图
你忘了告诉我们你正在运行的SQL语句之类的细节,但这是我的猜测:
你运行了一个带有大结果集的语句,并且驱动程序试图将它全部存入RAM。
在这种情况下,您应该使用PreparedStatement
并使用setPrepareThreshold
来设置提取大小。然后将使用光标,您可以避免此问题。
有关详细信息,请参阅the documentation。