Golang-垃圾回收-三色标记法

本文回顾了垃圾回收的基本概念和步骤,重点介绍了三色标记法,包括基本概念、过程、多标(浮动垃圾)和漏标(读写屏障)。三色标记法从GC Roots开始,将对象标记为白色、灰色和黑色,以确定哪些对象可以回收。在并发标记时,可能产生浮动垃圾和漏标问题,需要通过读写屏障来解决。
摘要由CSDN通过智能技术生成

1.垃圾回收回顾

1.1 概念:

垃圾回收算法目前常见的也就那么几种,如:标记-清除、标记-复制、标记-整理。在此基础上可以采用分代管理(新生代、老年代、永久代),每代采用不同的垃圾回收算法,以提高整体的回收效率。

1.2 步骤:
  • 标记存活对象和可回收对象(可达性分析算法、计数法)
  • 对可回收对象采用进行垃圾回收处理
1.3 标记方法:
  • 可达性分析算法:可达性分析算法是以根对象集合(GC Roots)为起始点,按照从上至下的方式进行搜索,搜索所走过的路径称为引用链(Reference Chain),通过判断对象与GC Roots之间是否有引用链相连来判断该对象是否需要回收,如果目标对象没有任何引用链相连,则是不可达的,就意味着该对象已经死亡,可以标记为垃圾对象。
  • 引用计数算法:为每一个对象分配一个计数器,当这个对象被另一个对象引用时,这个计数器就加一;当被另一个对象取消引用时,计数器就减一。当这个计数器的值为零时,就表示当前对象没有被任何对象所引用,那么这个对象就可以被垃圾回收器进行回收了。该方法实现起来非常简单,但是有一个致命的缺点,那就是不能解决各对象之间循环引用的问题。

2.三色标记法

2.1 基本概念:<
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值