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

被折叠的 条评论
为什么被折叠?



