我们不用去管这两个方法的执行者是谁,各自的实现机制有什么不一样(这些我都非常清楚),这不是问题的重点
问题是我认为这两种方法最终的使用效果是一样,我在destroy-method里干的事,放到finalize里最终得到的结果是一样的。
比如某个Bean我需要它在被销毁前释放数据库连接,那么我可以在destroy-method里做这个事。但是在finalize里也可以做这个事。从使用效果上来看没差别啊。
ericlntm说finalize不知道什么时候会调用。这是不对的,finalize在被垃圾回收机制销毁前一定会执行,其一般用法也是释放手中持有资源。finalize也只不过是一个普通的方法,显式的调用它也没什么问题,又不会真的激发垃圾回收,它也只是一个垃圾回收器的回调方法。从作用,一般用法,执行时间,执行方式上来说这与destroy-method完全一样。