首页 > 解决方案 > 为什么调用 Statement.close() 不会立即释放 Statement 对象创建的 ResultSet 对象?

问题描述

来自 JDBC 规范

关闭 Statement 对象将关闭该 Statement 对象生成的任何 ResultSet 实例并使之无效。ResultSet 对象持有的资源可能在垃圾回收再次运行之前不会被释放,因此在不再需要 ResultSet 对象时显式关闭它们是一个好习惯。

标签: javajdbc

解决方案


似乎是根据ResultSet SE 8 #close()立即发布的

声明 SE 8也是如此

当生成它的 Statement 对象关闭时,ResultSet也会自动关闭。

当生成它的 Statement 对象关闭、重新执行或用于从多个结果序列中检索下一个结果时,ResultSet 对象将自动关闭。


推荐阅读