Java.sql.Array/Blob/Clob类型需要进行"free()"操作吗?

9
我需要在使用free()释放数组、clobs等时是否需要显式调用,或者关闭ResultSet和/或Statement是否会自动处理?Javadoc没有说明,因此我认为这不是必需的,但我不想做出错误的假设。
此外,如果不需要,那么如果您将立即关闭结果集,这是一个好主意吗?如果您不打算这样做,我可以看到它可能有所帮助。
1个回答

3

这取决于您使用的供应商和JDBC版本。由于并非所有数据库供应商都支持Array(例如MySQL),因此可能是javadoc没有提到任何内容的原因。

我在Oracle网站的JavaSE教程中找到了这个教程Using Array Object,它说要明确释放资源。

这里有另一个链接,说明了free()的场景。 JDBC 4's java.sql.Clob.free() method and backwards compatibility

如果不必要,如果您将立即关闭结果集,这是一个好主意吗?

我认为如果不需要,则不需要free(),但是如果它是长时间运行的事务,则最好调用free()。

引用自tutorial

数组对象在创建它们的事务期间至少保持有效。在长时间运行的事务中,这可能导致应用程序耗尽资源。应用程序可以通过调用其free方法释放数组资源。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接