Java面试问题:finalize()方法
2022-09-01 11:25:34
在一次采访中,我得到了以下短语:
调用 Object 的 finalize() 方法是在对对象进行垃圾回收之前发生的最后一件事。
我不得不通过以下方式回答:
- 真
- 假
我选择了,但这是错的。你能解释一下为什么吗?True
在一次采访中,我得到了以下短语:
调用 Object 的 finalize() 方法是在对对象进行垃圾回收之前发生的最后一件事。
我不得不通过以下方式回答:
我选择了,但这是错的。你能解释一下为什么吗?True
顺序不同:
查看 http://java.dzone.com/articles/ocajp-7-object-lifecycle-java
对象生命周期:
- 创建
- 使用中(强力可达)
- 无形
- 遥 不可 及
- 收集
- 完成
- 已解除分配
我认为这暗示了这样一个事实,即在GC真正丢弃它之前,实际上还有其他事情可以对对象进行/发生。
引用参考文献:
[...]finalize 方法可以执行任何操作,包括使此对象再次可供其他线程使用;但是,Finalize 的通常目的是在不可撤销地丢弃对象之前执行清理操作。例如,表示输入/输出连接的对象的 finalize 方法可能会执行显式 I/O 事务以在永久丢弃对象之前断开连接。[...]
因此,从这个角度来看,最终确定过程并不是GC丢弃它之前的最后一件事。