2024-10-26  阅读(20)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1036554623

回答

finalize()java.lang.Object 类中的一个方法,它的主要作用是在垃圾回收器回收对象之前,执行一些释放资源的操作。

具体来说,就是当垃圾回收器确定一个对象不会被再次使用时,会去尝试调用该对象的 finalize(),以便该对象在回收之前执行一些必要的清理操作。

但是,在实际应用过程中,一般都是不推荐使用 finalize()

扩展

在面试题 JVM 是如何判断对象是否存活?中,大明哥详细列出了 finalize() 方法的执行过程,就直接引用了:

  • 1、可达性分析后的初次标记

在可达性分析中,如果一个对象与GC Root之间没有引用链连接,JVM 会进行一次标记,标记这些不可达的对象。然而,这并不意味着这些对象会马上被回收。在这一阶段,JVM 会进一步判断该对象是否有必要执行finalize()方法。

  • 2、判断是否执行finalize()方法

每个对象默认都有 finalize() 方法,但这个方法只有在对象即将被回收时,才可能被调用。如果以下条件满足,则认为没有必要执行finalize()方法: