PreparedStatement.close()vs PreparedStatement = null;

时间:2016-11-25 05:02:47

标签: java

我有一个简单的问题。我的代码中有一些内存泄漏,因为我认为这是因为PreparedStatement和ResultSet我想知道什么是释放资源及其内存的最佳,安全和正确的方法。

PreparedStatement.close()PreparedStatement = null

ResultSet.close()ResultSet = null

谢谢

1 个答案:

答案 0 :(得分:5)

对每个使用过的Closable对象调用close()方法。清除参考资料还不够。

如果您只是清除引用,那么只有在Connection关闭时才会关闭这些Statement和ResultSet对象,如果使用ConnectionPool或类似的东西,它们(很可能)永远不会被关闭。

编辑:关闭连接会导致此连接创建的所有语句和结果集都关闭。关闭Statement会导致关闭此Statement创建的所有ResultSet。