2013-08-02 198 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