我有一个使用 Hibernate 连接到 PostgreSQL 后端的 Java 应用程序。经常收到 java.lang.OutOfMemoryError: Java 堆空间错误。在分析 OOM 上的堆转储并将其与正常运行期间获取的堆转储进行比较后,我注意到 org.postgresql.core.Field 对象显着增加。造成这种情况的潜在原因是什么?难道是Hibernate不正确关闭数据库连接造成的?
Jdk:18
数据库:Postgresql (42.3.5)
Hikaricp:4.0.3
春季启动:v2.7.0
org.postgresql.core.Field
是 postgresql 驱动程序中的一个类。如果您有这些实例,那么您似乎没有释放 jdbc 资源。
在普通 jdbc 中,如果您不调用
ResultSet.close()
和 Connection.close()
,则可能会发生这种情况。
使用休眠,这些是通过休眠包装的
Session
所以你需要确保你正确地调用 Session.close()
你如何管理你的冬眠
Session
s?