当前位置: 首页 > news >正文

浅谈GC机制-三色标记和混合写屏障

标记清除法

stw(stop the world):暂停所有goroutine,扫描出可达与不可达对象,进行回收

三色标记法

不暂停,并发扫描,从根节点出发,扫描过对象的为黑,下一个可达对象为灰,接下来每一轮从灰节点出发,直到灰节点全部扫描完,只剩下黑和白,回收白色

如果三⾊标记法不被STW保护:

在这里插入图片描述

可能会出现白色对象3被黑色对象4引用后,原来引用它的灰色对象2同时删除对3的引用,由于不会再次扫描黑色4,故可达对象3会被误判为不可达而被回收

在这里插入图片描述

因此,三色标记法在全部扫描完毕后需要STW重新扫描一遍

对象丢失条件:

条件1: ⼀个⽩⾊对象被⿊⾊对象引⽤ (⽩⾊被挂在⿊⾊下)

条件2: 灰⾊对象与它之间的可达关系的⽩⾊对象遭到破坏 (灰⾊同时丢了该⽩⾊)

两个条件同时满⾜,那么就会出现对象丢失的现象

混合写屏障

结合了插入写屏障和删除写屏障,为解决并发扫描下的对象丢失问题,只需要破坏其中一个条件:

1.进行GC时将栈上所有对象变为黑色

2.栈上对象不触发插入和删除屏障

3.堆上,新插入的对象变为灰色

4.堆上,被删除引用的对象变为灰色

http://www.xdnf.cn/news/536203.html

相关文章:

  • 蓝桥杯分享经验
  • 【cursor指南】cursor免费续杯pro会员试用
  • UE 材质基础第二天
  • Java:logback-classic与slf4j版本对应关系
  • ROS 2动态负载均衡系统架构与跨主机外设访问方案j1900(工业机器人集群协同场景)
  • 大语言模型怎么进行记忆的
  • 大语言模型(LLM)如何通过“思考时间”(即推理时的计算资源)提升推理能力
  • 微店平台关键字搜索商品接口技术实现
  • OceanBase 开发者大会:详解 Data × AI 战略,数据库一体化架构再升级
  • rsync实现远程同步
  • vs code SSH配置免密登录
  • day017-磁盘管理-实战
  • 深入探讨Java中的上下文传递与ThreadLocal的局限性及Scoped Values的兴起
  • c++字符串常用语法特性查询示例文档(一)
  • 包装类(1)
  • 22-内部FLASH
  • java day13
  • JVM 垃圾回收器
  • EX文件浏览器:功能强大的安卓文件管理工具
  • 特征值与特征向量的计算——PCA的数学基础
  • 扫描项目依赖漏洞
  • Go语言八股文之分库分表
  • 中服云生产线自动化智能化调度生产系统:打造智能制造新标杆
  • 前端子项目打包集成主项目实战指南
  • 高校快递物流管理系统设计与实现(SpringBoot+MySQL)
  • 1.3.3 数据共享、汇聚和使用中的安全目标
  • 蓝桥杯框架-LED蜂鸣器继电器
  • 大中型水闸安全监测系统解决方案
  • C++初阶-vector的底层
  • 解决RAGFlow部署中镜像源拉取的问题