我跟着把一個close()
最終塊的做法:java.sql.Connection對象在垃圾回收時會自動關閉嗎?
void foo() {
Connection conn;
try {
conn = getConnection();
// ..
} final {
try {
conn.close()
} catch(Exception e) {
}
}
}
是否真的需要調用連接上close()
,或將垃圾收集器會自動做呢?
我確定垃圾收集會帶來額外的延遲,我只是不希望連接永遠保持打開狀態。
它是您的責任,當您完成它的關閉連接。垃圾收集器不會爲你做。 – Perception 2013-02-12 23:01:16
也許這回答你的問題:http://stackoverflow.com/questions/8652336/jdbc-garbage-collection 總結:你需要關閉連接,以防止各種泄漏,不能依靠GC爲你做。 – 2013-02-12 23:01:35
您可能會在連接完成之前耗盡連接。沒有結束就不可靠。你可能喜歡嘗試執行周圍的習語。 (由於你的代碼顯然是編寫的,你似乎會放棄關閉的異常(可能是因爲失敗獲取而導致的NPE) - 您可能想要從那裏拋出某種異常,類似於獲取連接所拋出的異常。對於Java SE 7,您可以使用新的嘗試資源語法來粗略地做正確的事情,但是執行周圍仍然勝利。) – 2013-02-12 23:02:13