我们有一个java应用程序,我们使用多个语句变量。为什么需要多于一个语句的问题是,当在循环内运行一个循环的循环时,我们需要进行一些其他的查询操作。单个stmt的大多数地方被多次使用,最后我们关闭。我们现在要确认的是,我们没有关闭结果集变量,我们注意到内存的使用波动。那么在我们得到结果之后立即关闭结果集的最佳机制是什么,或者在stmt正好之前结束闭合?
答案 0 :(得分:3)
根据JDBC规范和Statement.close()
API doc,它应该足够了:
注意:当Statement对象关闭时,它的当前ResultSet对象(如果存在)也将关闭。
基于此,您应该可以假设您只需要关闭一个语句。但是,由于Statement可以比使用从中获取的单个ResultSet具有更长的生命周期,因此通常尽快关闭ResultSet是个好主意。
语句可以具有更长的生命周期,因为例如,您再次使用它来执行另一个查询,或者在PreparedStatement的情况下,使用不同的参数再次执行查询。在您执行另一个查询的情况下,先前获得的ResultSet将被关闭。
答案 1 :(得分:1)
完成后关闭它,与任何其他资源相同。 Mo坚持持续更长时间,特别是如果你要测量内存,这意味着内存问题。