你的问题是一个很基本的问题
当st = con.creatstatement();st就指向了一个对象,也就是说st引用了那个对象
然后循环再执行这句话时st又指向了另一个对象
你的问题是原来的st去哪了?
很简单,st只是一个对象,他的引用是最后一个指向的对象
而之前由con.creatstatement();生成的对象都成了没人要的孤儿了
用javadoc的话说这些对象已经满足了垃圾回收的要求,但jvm什么时候回收就得看它什么时候心情好了
当st = con.creatstatement();st就指向了一个对象,也就是说st引用了那个对象
然后循环再执行这句话时st又指向了另一个对象
你的问题是原来的st去哪了?
很简单,st只是一个对象,他的引用是最后一个指向的对象
而之前由con.creatstatement();生成的对象都成了没人要的孤儿了
用javadoc的话说这些对象已经满足了垃圾回收的要求,但jvm什么时候回收就得看它什么时候心情好了
如果我把st.close();这句话也删掉,那么最后一个Statement会不会随着Connection的关闭而关闭!
即最初的问题 当Connection关闭的时候由Connection生成的Statement会不会自动关闭?
有明确的理论根据吗?
Note: A Statement object is automatically closed when it is garbage collected. When a Statement object is closed, its current ResultSet object, if one exists, is also closed.
注意:当垃圾回收的时候,一个Statement对象会自动被关闭,同时和它相关的结果集都将被关闭。
注意:当垃圾回收的时候,一个Connection对象将被自动关闭。
----------------------
当然不会!
Note: A Statement object is automatically closed when it is garbage collected.
也就是说,只有等到垃圾回收时才会自动关闭。
Statement的对象引用不存在了,它符合垃圾回收的条件,但并不会被立即回收的