为什么不该将类的finalize()方法作为通用的清理方法?
Java允许在类中定义一个名为finalize()的方法。一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
所以,尽量不在finalize()方法中写清理回收资源的逻辑,例如关闭数据库连接、关闭打开的文件流等,因为你不知道什么时候垃圾回收器进行垃圾回收,所以finalize()方法何时被调用就不能确定。这样可能在未进行回收之前,数据库连接就已经超过连接限制等。