图解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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstudy本地搭建域名访问

    phpstudy本地搭建域名访问

    2021年10月9日
    32
  • System.getProperty()

    System.getProperty()System类来自于这个包:java.lang.SystemSystem.getProperty("XXX")方法用来读取JVM中的系统属性,那么java虚拟机中的系统属性使用

    2022年7月3日
    19
  • MySQL数据库—视图索引

    MySQL数据库—视图索引一.视图概述1.视图是基于某个查询结果的虚表。(根据实际存在的表,经过查询之后,创建出来的一个虚表,被称为视图)2.视图如同真实的表一样,对视图进行增删改(insert,update,delete)操作,原表数据会受影响,同样的道理,对原表进行增删改操作,视图也会受影响。3.视图的作用:方便用户对数据进行操作二.创建视图格式:createview视图的名字asselect查询语句;–创建一个视图view_student,包含计算机系和数学…

    2022年7月22日
    5
  • Mask_RCNN训练自己的数据——制作COCO格式的数据集[通俗易懂]

    Mask_RCNN训练自己的数据——制作COCO格式的数据集[通俗易懂]matterport版mask_rcnn系列:1.Mask_RCNN训练自己的数据2.目标检测:使用Open_cv在图像上批量画boundingbox3.Mask_RCNN:使用COCO权重进行特定类别预测(只标记出你需要的类别)4.Mask_RCNN:ValueError:Dimension1inbothshapes……………

    2022年10月4日
    0
  • Article及ArticleList模板

    Article及ArticleList模板HTML5滑动条:tuicoolhttp://www.tuicool.com/articles/U36rMjZoschinahttp://www.oschina.net/p/spyder百度经验htt

    2022年7月3日
    20
  • ospf数据库同步过程_OSPF的概念

    ospf数据库同步过程_OSPF的概念OSPF协议之链路数据库同步OSPF如何实现链路状态数据库的同步-链路信息主要包括:1、链路的类型;2、接口IP地址及掩码;3、链路上所连接的邻居路由器;4、链路的带宽(开销)。区别于RIP路由器之间交互的路由信息,OSPF路由器同步的是最原始的链路状态信息,而且对于邻居路由器发来的链路状态信息,仅作转发。最终所有路由器都将拥有一份相同且完整的原始链路状态信息。为…

    2022年10月15日
    0

发表回复

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

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