finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动该对象被回收的时候被调用。由于gc可以回收大部分的对象,所以一般是不需要去实现finalize的。 特殊情况下需要实现finalize方法,例如当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。 使用finalize还需要注意一个事,调用super.finalize(),一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,所以有可能调用finalize()后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会调用finalize(),产生问题。 所以,推荐不要使用finalize()方法。
finalize方法
最新推荐文章于 2023-10-08 09:51:32 发布