java.sql.Connection
如果as的实例con
无效,与数据库建立的连接会发生什么情况。
con = null;
连接是关闭还是保持打开直到应用程序运行。
第二个问题:
同样,如果有javax.mail.Store
as的实例store
并将其无效,
store = null;
将关闭 smtp 连接还是保持未关闭状态。谢谢。
java.sql.Connection
如果as的实例con
无效,与数据库建立的连接会发生什么情况。
con = null;
连接是关闭还是保持打开直到应用程序运行。
第二个问题:
同样,如果有javax.mail.Store
as的实例store
并将其无效,
store = null;
将关闭 smtp 连接还是保持未关闭状态。谢谢。
如果您将您设置Connection
为 null,则此连接将保持“打开”状态,并且与关闭关联的代码将不会运行。因此,为了关闭它,您必须调用该close()
方法。如果连接没有关闭,连接可能持有的其他资源也不会被释放
如果你让你的connection
实例为空而不调用close()
then,
connection
准备好被垃圾收集
并且它不会调用与close()
方法实现相关的代码
有 finalize 方法,Connection 或 Store 的具体实现很可能会覆盖此方法并在那里调用 close()。例如,这里是 PostgreSQL JDBC 驱动程序的片段:
protected void finalize() throws Throwable
{
if (openStackTrace != null)
logger.log(GT.tr("Finalizing a Connection that was never closed:"), openStackTrace);
close();
}
当垃圾收集器决定是时候收集给定对象时,将调用此方法。
但建议始终手动关闭连接和类似资源,因为垃圾收集器是不可预测的。例如,您可以比垃圾收集器启动和释放资源更快地达到连接限制。