开发者社区> 问答> 正文

Java finalize()方法具有什么特点?

Java finalize()方法具有什么特点?

展开
收起
小天使爱美 2020-04-07 13:28:45 1189 0
2 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    finalize方法是Object提供的的实例方法,使用规则如下:

    当对象不再被任何对象引用时,GC会调用该对象的finalize()方法

    finalize()是Object的方法,子类可以覆盖这个方法来做一些系统资源的释放或者数据的清理

    可以在finalize()让这个对象再次被引用,避免被GC回收;7a686964616f31333366306437但是最常用的目的还是做cleanup

    Java不保证这个finalize()一定被执行;但是保证调用finalize的线程没有持有任何user-visible同步锁。

    在finalize里面抛出的异常会被忽略,同时方法终止。

    当finalize被调用之后,JVM会再一次检测这个对象是否能被存活的线程访问得到,如果不是,则清除该对象。也就是finalize只能被调用一次;也就是说,覆盖了finalize方法的对象需要经过两个GC周期才能被清除。

    2020-04-07 17:22:18
    赞同 展开评论 打赏
  • "finalize()方法具有如下4个特点。 永远不要主动调用某个对象的finalize()方法,该方法应交给垃圾回收机制调用。 finalize()方法何时被调用,是否被调用具有不确定性,不要把finalize()方法当成一定会被执行的方法。 当JVM执行可恢复对象的finalize()方法时,可能使该对象或系统中其他对象重新变成可达状态。 当JVM执行finalize()方法时出现异常时,垃圾回收机制不会报告异常,程序继续执行。"

    2020-04-07 13:58:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载