您现在的位置是:首页 > 文章详情

深入理解Java虚拟机(JVM) --- 垃圾收集算法(中)

日期:2019-11-02点击:516

2 回收无效对象的过程

当经可达性算法筛选出失效的对象之后,并不是立即清除,而是再给对象一次重生的机会

  • 判断是否覆盖finalize()

    • 未覆盖该或已调用过该方法,直接释放对象内存
    • 已覆盖该方法且还未被执行,则将finalize()扔到F-Queue队列中
  • 执行F-Queue中的finalize()
    虚拟机会以较低的优先级执行这些finalize(),不会确保所有的finalize()都会执行结束

如果finalize()中出现耗时操作,虚拟机就直接停止执行,将该对象清除

  • 对象重生或死亡

    • 如果在执行finalize()方法时,将this赋给了某一个引用,则该对象重生
    • 如果没有,那么就会被垃圾收集器清除

注意:强烈不建议使用finalize()进行任何操作!
如果需要释放资源,请用try-finally或者其他方式都能做得更好.
因为finalize(

原文链接:https://yq.aliyun.com/articles/725336
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章