JDBC结果集未关闭。结果

JDBC结果集未关闭。结果,jdbc,resultset,Jdbc,Resultset,嗨:我们有一些纯JDBC preparedstatement,在它执行查询之后,我们处理resultset。虽然我们关闭了语句,但我们从未关闭resultset。当一次又一次地执行此preparedstatement时(例如,百万次),是否会发生内存泄漏?关闭该语句应允许对结果集进行垃圾回收。但是,关闭语句将隐式关闭resultset,因此如何继续使用它?整个过程是否包装在一个try-catch-finally块中,该块在finally块中将语句和结果集设置为null 否则,如果抛出异常,可能会

嗨:我们有一些纯JDBC preparedstatement,在它执行查询之后,我们处理resultset。虽然我们关闭了语句,但我们从未关闭resultset。当一次又一次地执行此preparedstatement时(例如,百万次),是否会发生内存泄漏?

关闭该语句应允许对结果集进行垃圾回收。但是,关闭语句将隐式关闭resultset,因此如何继续使用它?整个过程是否包装在一个try-catch-finally块中,该块在finally块中将语句和结果集设置为null


否则,如果抛出异常,可能会破坏连接,语句和结果集可能无法连接。也就是说,只要您继续使用“快乐日”场景,一切都会好起来,但如果有一件事出错,它可能会导致一切崩溃,因为缺少最终块重置为null可能会阻止垃圾收集并占用您的所有资源(例如连接).

关闭该语句应允许对结果集进行垃圾回收。但是,关闭语句将隐式关闭resultset,因此如何继续使用它?整个过程是否包装在一个try-catch-finally块中,该块在finally块中将语句和结果集设置为null


否则,如果抛出异常,可能会破坏连接,语句和结果集可能无法连接。也就是说,只要你坚持“快乐日”方案,一切都会好起来,但如果有一件事出了问题,它可能会让一切都崩溃,因为没有将finally block重置为null可能会阻止垃圾收集并占用你的所有资源(例如连接)。

理论上,关闭语句应该关闭ResultSet。但现实世界的实践是另一回事


是的,有理由显式关闭ResultSet对象(或者使用新的try with resources语法关闭它们)。有关更多信息,请参阅设计限制和bug在JDBC驱动程序、连接池和数据库中非常常见,都可能导致问题。

理论上,关闭语句应该关闭结果集。但现实世界的实践是另一回事

是的,有理由显式关闭ResultSet对象(或者使用新的try with resources语法关闭它们)。有关更多信息,请参阅设计限制和bug在JDBC驱动程序、连接池和数据库中非常常见,都可能导致问题