JDBC关闭资源

时间:2011-09-07 22:18:25

标签: java jdbc connection resultset

我不确定在每次查询后或在我的所有查询完成后(即同时关闭连接)是否应该关闭语句和结果集?

如果我错了,请纠正我,但我确定两者都有效吗?

但是,如果我在每次查询后没有关闭语句然后执行了大量查询,数据库最终会崩溃吗?

另一方面,保持关闭& amp;效率低,浪费时间?为每个查询创建语句?

在问这个问题之前,我已经对这个问题进行了很多阅读,但我仍然不确定。任何帮助表示赞赏,

TRE。

2 个答案:

答案 0 :(得分:2)

来自http://www.precisejava.com/javaperf/j2ee/JDBC.htm#JDBC118

  

完成后关闭ResultSet

     

完成ResultSet的使用后立即关闭ResultSet对象   即使Statement对象关闭ResultSet对象   隐式地,当它关闭时,显式关闭ResultSet给出机会   垃圾收集器尽早回忆内存,因为   ResultSet对象可能会占用大量内存,具体取决于查询。

简而言之,你没有 明确地关闭你的ResultSet个对象,但最好这样做以便早些时候释放内存。未能关闭ResultSet对象只会导致占用的内存(可能很小或很大,具体取决于结果集的大小)占用,直到相应的Statement对象关闭为止

答案 1 :(得分:0)

这有多重要取决于你所做的具体细节。但通常最好关闭结果集(在finally块中)。从我一直阅读和看到的所有内容中,打开连接本身就是性能损失的地方。

想要做的事情是非常快速地打开/关闭连接(这就是许多应用程序和服务器实现连接池的原因)。