栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

可终结对象如何被回收至少需要2个垃圾回收周期?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

可终结对象如何被回收至少需要2个垃圾回收周期?

没错,垃圾收集器需要引用可终结对象。当然,在确定对象在最终确定之前是否仍可到达时,不得考虑该特定参考。这意味着需要有关该垃圾收集器引用性质的特殊知识。

当垃圾回收器确定某个对象可以进行终结处理时,终结处理程序将运行,这意味着至少在执行终结处理程序之后,该对象才能再次强烈地可访问。完成对象确定后,必须再次变得无法访问该对象,并且必须对其进行检测,然后才能回收该对象的内存。这就是为什么需要至少两个垃圾回收周期的原因。

在广泛使用的热点/
OpenJDK的环境的情况下(在IBM的JVM也有可能),这是通过创建一个特殊的实例来实现,非公子类

Reference
,一
Finalizer
,权当一个对象,其类有一个不平凡
finalize()
方法,已创建。像弱引用和软引用一样,当不存在对引用的强引用时,垃圾收集器会将这些引用排队,但不会清除它们,因此终结器线程可以读取该对象,使其可以再次强烈地到达终结对象。此时,
Finalizer
已清除,但也不再对其进行引用,因此无论如何它都将像普通对象一样被收集,因此到下一次该引用变得不可访问时,不再存在对其的特殊引用。

对于其类具有“琐碎终结器”的对象(即,被

finalize()
继承的方法
java.lang.Object
或空
finalize()
方法),JVM将采取捷径,而不是首先创建
Finalizer
实例,因此可以说,这些对象从一开始,大多数对象的行为就好像它们的终结器已经运行一样。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号