我有一个简单的问题。我的代码中有一些内存泄漏,因为我认为这是因为PreparedStatement和ResultSet我想知道什么是释放资源及其内存的最佳,安全和正确的方法。
PreparedStatement.close()
或PreparedStatement = null
?
ResultSet.close()
或ResultSet = null
?
谢谢
答案 0 :(得分:5)
对每个使用过的Closable对象调用close()方法。清除参考资料还不够。
如果您只是清除引用,那么只有在Connection关闭时才会关闭这些Statement和ResultSet对象,如果使用ConnectionPool或类似的东西,它们(很可能)永远不会被关闭。
编辑:关闭连接会导致此连接创建的所有语句和结果集都关闭。关闭Statement会导致关闭此Statement创建的所有ResultSet。