2013-08-02 273 views
0

所有現代IDE都有可能在您進行調試時運行一段代碼。 Intellij Idea有「Watches」窗口,Eclipse有「Expressions」窗口。有趣的是,資源如何清洗,如果我作出這樣一個電話(conenction變量是java.sql.Connection中):IDE如何釋放資源?

connection.prepareCall("some sql function"); 

這產生CallableStatment,可能是幾倍,但是當它/他們將被關閉?或者這個CallableStatment將永遠存在?

回答

0

如果IDE是用Java編寫的,它將像任何其他Java對象一樣工作:一旦它不再有引用(例如通過輸出到控制檯但沒有引用保存在任何地方),它就符合垃圾收集。

+0

你告訴過POJO。如果這樣的「對象」依賴於外部資源呢?例如,您不能等到GC銷燬ResultSet,因爲與它關聯的數據庫資源將存在。那就是問題所在。 – Cherry

+1

除非您堅持使用資源並手動發佈它,否則就會泄漏,就像使用Java中的其他外部分配資源一樣。如果對象有一個終結器,可能會釋放資源,但由於無法保證終結器的執行,您可能會泄漏該資源。 – chrylis