回答
finalize()
是 java.lang.Object
类中的一个方法,它的主要作用是在垃圾回收器回收对象之前,执行一些释放资源的操作。
具体来说,就是当垃圾回收器确定一个对象不会被再次使用时,会去尝试调用该对象的 finalize()
,以便该对象在回收之前执行一些必要的清理操作。
但是,在实际应用过程中,一般都是不推荐使用 finalize()
。
扩展
在面试题 JVM 是如何判断对象是否存活?中,大明哥详细列出了 finalize()
方法的执行过程,就直接引用了:
- 1、可达性分析后的初次标记
在可达性分析中,如果一个对象与GC Root
之间没有引用链连接,JVM 会进行一次标记,标记这些不可达的对象。然而,这并不意味着这些对象会马上被回收。在这一阶段,JVM 会进一步判断该对象是否有必要执行finalize()
方法。
- 2、判断是否执行finalize()方法
每个对象默认都有 finalize()
方法,但这个方法只有在对象即将被回收时,才可能被调用。如果以下条件满足,则认为没有必要执行finalize()
方法: