判断对象是生存还是死亡

使用可达性分析算法找出的不可达的对象,这些对象是不可用的,然后要判断他们是否死亡,至少需要经历两次标记过程。第一次标记时同时进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法,若是这些对象被判定有必要执行finalize()方法,那么这些对象将会被放置在一个F-queue的队列中,稍后GC将对这个队列中的对象进行第二次小规模的标记,这个时候,只要对象能重新与引用链上的任何一个对象建立关联,这些对象就能拯救自己,在第二次标记时他将被移除“即将回收”的集合,存活下来。

在第一次筛选时,若是这些对象没有必要执行finalize()方法,(当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,就被认为是没有必要执行finalize方法)。就会成为回收对象。

在第二次小规模标记时若是没能重新与引用链上的任一个对象建立关联,那这些对象就会成为回收对象。

重新与引用链上的对象建立关联(譬如把自己(this关键字)赋值给某一个类变量或者对象的成员变量)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值