图解Golang的GC算法「建议收藏」

图解Golang的GC算法「建议收藏」虽然Golang的GC自打一开始,就被人所诟病,但是经过这么多年的发展,Golang的GC已经改善了非常多,变得非常优秀了。以下是GolangGC算法的里程碑:v1.1STWv1.3MarkSTW,Sweep并行v1.5三色标记法v1.8hybridwritebarrier经典的GC算法有三种:引用计数(referencecounting)、标记-清扫(mar…

大家好,又见面了,我是你们的朋友全栈君。

虽然Golang的GC自打一开始,就被人所诟病,但是经过这么多年的发展,Golang的GC已经改善了非常多,变得非常优秀了。

以下是Golang GC算法的里程碑:

  • v1.1 STW
  • v1.3 Mark STW, Sweep 并行
  • v1.5 三色标记法
  • v1.8 hybrid write barrier

经典的GC算法有三种:引用计数(reference counting)标记-清扫(mark & sweep)复制收集(Copy and Collection)

Golang的GC算法主要是基于标记-清扫(mark and sweep)算法,并在此基础上做了改进。因此,在此主要介绍一下标记-清扫(mark and sweep)算法,关于引用计数(reference counting)和复制收集(copy and collection)可自行百度。

标记-清扫(Mark And Sweep)算法

此算法主要有两个主要的步骤:

  • 标记(Mark phase)
  • 清除(Sweep phase)

第一步,找出可达的对象,然后做上标记。
第二步,回收未标记的对象。

操作非常简单,但是有一点需要额外注意:mark and sweep算法在执行的时候,需要程序暂停!即stop the world
也就是说,这段时间程序会卡在哪儿。故中文翻译成卡顿

我们来看一下图解:

开始标记

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151093.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月22日 下午3:36
下一篇 2022年6月22日 下午3:46


相关推荐

  • mysqlclient python_Python3.7安装mysqlclient

    mysqlclient python_Python3.7安装mysqlclient前言 MysqlClient 是 Python 操作 MySql 的一个驱动程序 是 MySQL python 的另外一个分支 目前 MySQL python 只支持到 Python2 而 MysqlClient 支持 Python3 并且修复了一些 bug 安装目前安装的 Python 版本为 3 7 1 如果直接使用以下命令安装会报错 pipinstallmy 第三方组件

    2026年3月18日
    1
  • Windows常用脚本合集

    Windows常用脚本合集Windows常用脚本合集问题描述因为使用windows一些常用命令需要手动操作,比如启用ssh链接,要先使用win+r输入cmd再输入ssh,有时候甚至ssh命令容易忘记,还需要查看帮助,所以特此集合了一些常用命令软硬件描述操作系统windows10笔记本电脑使用方法创建文件xx.bat再【常用shell】中把代码复制到xx.bat中保存即可,然后双击使用常用shell禁用笔记本电脑自带的键盘,这个功能可以防止使用外接键盘时误触笔记本自带键盘。需要重启电脑后生效,慎重%1m

    2022年7月15日
    40
  • AI Agent 进化论:从“人设”到“行动者”的三大阶段解析

    AI Agent 进化论:从“人设”到“行动者”的三大阶段解析

    2026年3月15日
    4
  • whl 文件怎么安装

    whl 文件怎么安装whl 文件怎么安装 1 首先进入官网下载 whl 文件 然后保存位置要记住 2 从保存位置之间进入 cmd3 在打开的 cmd 中之间 pipinstall 文件名卸载 pippipuninst 文件名

    2026年3月26日
    2
  • python 数字转换成字符串取固定位数_字符串转换为数值

    python 数字转换成字符串取固定位数_字符串转换为数值数字转成字符串,使用格式化字符串:如tt=322tem=’%d’%tttem即为tt转换成的字符串 常用的格式化字符串:%d      整数%f%F    浮点数%e%E   科学计数%g%G    e和%f/%E和%F的简写 %%       输出%

    2022年10月12日
    5
  • clientWidth–用法[通俗易懂]

    clientWidth–用法[通俗易懂]<!DOCTYPEhtml><html><head><title></title><metacharset=’utf-8’/><styletype=”text/css”>*{margin:0;padding:…

    2022年7月22日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号