垃圾清除阶段之标记 - 清除算法 复制算法 标记 - 压缩算法及算法的对比 【图文】

清除阶段(Sweep)

一个对象出现第一次没有被引用的情况,就会被加入到F-Queue队列等待执行finalize()方法判断是否有机会复活或者直接被当作垃圾回收。以便有足够的可用内存空间为新对象分配空间。

目前JVM有三种常见的垃圾回收算法:标记 - 清除算法(Mark - Sweep)复制算法标记压缩算法

一、标记 - 清除算法(Mark - Sweep)

1、背景:标记 - 清除算法(Mark - Sweep)是一种非常基础和常见的垃圾回收算法,该算法被J.MaCarthy等人再1960年提出并应用于Lisp语言。

2、原理:当堆中有效内存空间被耗尽的时候,就会停止整个程序(也被称之为stop the world 所谓的STW),然后进行两项工作,第一项则是标记。第二项则是清除。

(1)标记:Collector从引用根节点开始遍历,标记所有被引用的对象。一般是在对象的Header中记录为可达对象。

(2)清除:Collector对堆内存从头到尾进行线性的遍历,如果发现某个对象在其Header中没有标记为可达对象,则将其回收。 图文:

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值