跟进问题Closing Database Connections in Java
Connection conn = DriverManager.getConnection(
"jdbc:somejdbcvendor:other data needed by some jdbc vendor",
"myLogin",
"myPassword" );
Statement stmt = conn.createStatement();
try {
stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " );
} finally {
//It's important to close the statement when you are done with it
stmt.close();
}
conn.close();
我知道conn.close()是必要的,但不知道为什么。一旦方法调用结束,垃圾收集器是否会释放连接对象(并释放存储在其中的每个处理程序指向数据库)?
答案 0 :(得分:1)
一旦方法调用结束,垃圾收集器是否会释放连接对象(并释放存储在其中的每个处理程序指向数据库)?
没有。 JDBC驱动程序保留对连接的引用,因此除非您可以关闭()。否则它不会被清除。
BTW创建数据库连接非常昂贵,因此您可能希望尽可能回收您的连接。
答案 1 :(得分:0)
您相信您是唯一一个引用Connection的人。驱动程序可能会跟踪它们,并且它不会放弃尚未关闭的连接。这就是为什么你总是需要关闭所有更复杂的资源(连接,流等)。