算法——垃圾回收算法——标记清除

简介

        标记清除算法简介。

文章中使用的动画网站地址:
限 pc: 标记清除动画 :http://www.donghuasuanfa.com/platform/portal?pc=mark-sweep

算法一览表:https://blog.csdn.net/ww753951/article/details/106862328

算法过程

        算法分为俩个步骤。
        一:标记阶段:标记阶段是把所有活动对象都做上标记的阶段。
        二:清除阶段:清除阶段是把那些没有标记的对象,也就是非活动对象回收的阶段。

        演示的动画来源:标记清除算法动画地址http://www.donghuasuanfa.com/platform/portal?pc=mark-sweep

1.标记阶段

        首先将所有存活对象做上标记,示例动画以jvm内存模型为例,根据gc root做扫描,如果被gc root引用,则判断为存活对象。
示例动画如下:
请添加图片描述
        示例中从gc root开始扫描,然后由于gc root和对象A有引用关系,所以对象A标记为存活对象。然后继续从gc root开始扫描,由于gc root和对象B有引用关系,所以对象B为存活对象,由于B引用了对象D。所以D也为存活对象。扫描步骤结束。

2.清除阶段

        扫描内存区域,然后将未被标记为存活对象的进行清除操作。
示例动画如下:
请添加图片描述
        jvm开始扫描内存区域,因为A为存活对象,所以继续扫描B,同样B也为存活对象。然后继续扫描,因为C没有被标记为存活对象,所以删除C。以此类推直至扫描完整体的内存区域。清除过程结束。

3.缺点

3.1内存碎片化

        在GC标记-清除算法的使用过程中会逐渐产生被细化的分块,不久后就会导致无数的小分块散布在堆的各处。我们称这种状况为碎片化(fragmentation)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值