【发布时间】:2021-02-24 01:08:03
【问题描述】:
几个月前,我了解到在使用java.sql.connection 时,我需要关闭PreparedStatements 和ResultSet 以防止内存泄漏,正如here 所解释的那样
然而,我最近开始与一个使用 org.sql2o.connection 的新团队合作,这是一个很好且有用的 jdbc 包装器,但我注意到他们通常不会关闭他们的 org.sql2o.Query 对象。
try(org.sql2o.Connection c = Sql2oObject.open()){
//...some logic
List<SomeClass> list = c.createQuery(sql).executeAndFetch(SomeClass.class);
//...some more logic
}
如您所见,查询对象从未显式关闭。我认为关闭查询会更好:
try(org.sql2o.Connection c = sql2oObject.open();
org.sql2o.Query q = c.createQuery(sql); ) {
//...some logic
List<SomeClass> list = q.executeAndFetch(SomeClass.class);
//...some more logic
}
但我不确定这是否真的有必要。如果是,那么我已经发现了一个可能的重大泄漏,我将被视为天才,并被永远铭记。如果不是,那我只是一个要求进行不必要更改的人。
那么,你说什么哦,强大的 SO?有必要关闭吗?
【问题讨论】:
标签: java jdbc garbage-collection sql2o