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

Go-通俗易懂垃圾回收及运行过程

Go 的垃圾回收(GC)就像一个自动的“内存清洁工”,它会自动回收程序不再使用的内存空间,避免内存泄漏。整个过程分为 标记存活对象清除垃圾对象 两个核心步骤,并采用 三色标记法 + 并发处理 实现高效回收。


核心原理:三色标记法(Tri-color Marking)

想象内存中的对象被标记为三种颜色:

  1. 白色:待检查对象(初始状态)
  2. 灰色:已扫描但引用的对象未检查完
  3. 黑色:已扫描且所有引用对象也完成检查(存活对象)
    在这里插入图片描述
工作流程(分4步)
  1. STW 初始标记(暂停极短)

    • 暂停所有程序(Stop The World)
    • 快速标记根对象(全局变量、栈变量等)为灰色
    • ⏱️ 耗时:通常 < 1ms
      在这里插入图片描述
  2. 并发标记(与程序并行运行)

    • 程序恢复运行
    • GC 协程逐步处理灰色队列:
      • 将灰色对象引用的白色对象标记为灰色
      • 当前对象标记为黑色
    • 关键:通过写屏障(Write Barrier) 监控内存修改,确保数据一致性
      在这里插入图片描述
  3. STW 标记终止(短暂暂停)

    • 再次暂停程序
    • 完成最后标记
    • 确认所有灰色对象已处理完
    • ⏱️ 耗时:通常 1~10ms
  4. 并发清除(与程序并行)

    • 程序恢复运行
    • 回收所有白色对象(未被标记的垃圾)
    • 黑色对象重置为白色(下一轮准备)
      在这里插入图片描述
http://www.dtcms.com/a/290204.html

相关文章:

  • 每日面试题11:JVM
  • Ubuntu 22.04 安装 Jdk 8和 Tomcat (安装包形式)
  • Three.js 从零入门:构建你的第一个 Web 3D 世界
  • 破除扫描边界Photoneo MotionCam-3D Color 解锁动态世界新维度
  • 计算机网络第四章(3)——网络层《IPV4(子网划分、子网掩码)》
  • datasophon下dolphinscheduler执行脚本出错
  • 突破密度瓶颈:PCIe 8xCAN 多通道接口技术解析
  • react 录音功能
  • ODB安装与使用
  • 部署zabbix企业级分布式监控
  • 智慧场景:定制开发开源AI智能名片S2B2C商城小程序赋能零售新体验
  • SLAM实战——13章代码学习及回环检测的补充
  • STM32-第九节-ADC模数转换
  • ❗量化模型构建回测框架
  • 【2025/07/21】GitHub 今日热门项目
  • 【HTTP缓存机制深度解析:从ETag到实践策略】
  • C# Lambdab表达式 Var 类
  • 如何防止QQ浏览器录屏,盗录视频资源?
  • Apache Ignite Binary Object 调优
  • 【牛客算法】小美的排列询问
  • Linux 命令大全
  • Java基础教程(010):面向对象中的this和就近原则
  • 移星科技 modbus-tcp 转 modbus-Rtu模块
  • 安卓模拟器安装后,sdk版本详情简介及安卓sdk建议装哪几个版本
  • 突破量子仿真瓶颈:微算法科技MLGO量子算法的算术化与核操作迭代模型
  • 区块链之以太坊合约开发工具——Metamask钱包和Remix IDE
  • Android MTK平台预置多张静态壁纸
  • Freemarker生成Word文档下载到浏览器(下载word)
  • 上海GEO优化公司找哪家怎么做
  • uniapp底部导航栏凸起