1

我们有一个 java 应用程序,我们使用多个语句变量。为什么需要不止一个语句的问题是,有时在为循环内的一个结果运行循环时,我们需要完成一些其他查询操作。大部分地方单条stmt用了很多次,最后我们关了。我们现在要确认的是,我们没有关闭结果集变量,并且我们注意到内存的使用量在波动。那么,在我们得到结果后立即关闭结果集或在 stmt 即将结束之前关闭结果集的最佳机制是什么?关闭?

4

2 回答 2

4

根据 JDBC 规范和Statement.close()API 文档,它应该足够了:

注意:当 Statement 对象关闭时,其当前的 ResultSet 对象(如果存在)也将关闭。

基于此,您应该能够假设您只需要关闭一个语句。但是,由于 Statement 的生命周期可能比使用从它获得的单个 ResultSet 更长,因此通常尽快关闭 ResultSet 是一个好主意。

语句可以具有更长的生命周期,因为例如您再次使用它来执行另一个查询,或者在 PreparedStatement 的情况下使用不同的参数再次执行查询。如果您执行另一个查询,之前获得的 ResultSet 将被关闭。

于 2012-07-05T18:24:58.450 回答
1

完成后关闭它,与任何其他资源相同。Mo 指出要坚持更长时间,特别是如果您要测量记忆力,这意味着记忆问题。

于 2012-07-05T18:17:47.047 回答