jdbc statment 资源释放问题(高手请进入)

我看了java.sql包中Statement类的说明 其中关于Statement close()方法的说明 有这么一句话:Note: A Statement object is automatically closed when it is garbage collected.
我觉得这句话的意思是,如果你没有显示的调 Statement.close()来释放资源, 那么在Statement被垃圾收集的时候也会调用Statmetn.close()来释放数据库资源。我很奇怪,我觉得垃圾收集statement对象的时候,一般是仅仅释放statement对象的内存,它怎么会自动的调用statement的close()方法去释放数据库资源了?因为我觉得对gc来说 statement对象和别的对象应该是无法区分的,它不太可能对一个要收集的对象还要判断是不是statement对象,如果是的话,先调用close(),然后再收集这个对象,这样的话gc的效率太低了。那么这句话又是什么意思呢?

Object.finalize(), called by the garbage collector. Statment class overrides the finalize method to perform the cleanup.

意思说在垃圾回收的时候,这个statement才真正被回收。statement.close()是还没有被回收