【发布时间】:2012-07-06 04:39:51
【问题描述】:
我们有一个 java 应用程序,我们使用多个语句变量。为什么需要不止一个语句的问题是,有时在为循环内的一个结果运行循环时,我们需要完成一些其他查询操作。大部分地方单条stmt用了很多次,最后我们关了。我们现在要确认的是,我们没有关闭结果集变量,并且我们注意到内存的使用在波动。那么在我们得到结果后立即关闭结果集或在 stmt 即将结束之前关闭结果集的最佳机制是什么?关门了吗?
【问题讨论】:
-
在我的上一份工作中,我们发现 ResultSet 没有到达查询的末尾(例如,如果您不循环 while (rs.next()))并且您没有关闭它,它可以泄漏资源,至少对于 Oracle。如果您将其运行到查询的末尾,它似乎没有泄漏。
-
我建议您在完成后立即关闭 ResultSet,与 Statement 相同,与 Connection 相同
-
我推荐
resultSet.getStatement().close();关闭语句和结果集。 -
我们无法关闭该语句,因为我们多次重复使用它,否则我们必须设置与每个新语句的连接,对吗?所以立即完成结果集,我们将关闭它。