教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 大家一起学Golang——轻描淡写GC垃圾回收

大家一起学Golang——轻描淡写GC垃圾回收

发布时间:2021-04-10   编辑:jiaochengji.com
教程集为您提供大家一起学Golang——轻描淡写GC垃圾回收等资源,欢迎您收藏本站,我们将为您提供最新的大家一起学Golang——轻描淡写GC垃圾回收资源

GC垃圾回收

垃圾回收机制是一种自动管理内存的方式,是内存资源的回收,是程序后台自动判断对象是否要回收,使得开发人员从内存管理上解脱出来。
垃圾回收下列几种:

  • 引用计数
  • 标记清除
  • 三色标记
  • 分代收集

C VS Go 申请内存和释放内存,看出Go GC自动管理内存,确实方便。

//开辟内存空间
int *p = (int*)malloc(sizeof(int));
//释放空间
free(p);
//开辟空间,不需要手动释放
p := new(int)

当前Go GC特征:
三色标记,并发标记和清扫,非分代,非紧凑,混合写屏障。这里重点了解三色标记法和写屏障。

三色标记法:

  • 将所有对象放在白色集合中
  • 从rootset开始遍历可达对象,将可达对象发在灰色集合中,
  • 将灰色集合中对象进行遍历,将可达对象放在灰色集合中,将其本身放在黑色集合中
  • 重复第三步骤 直到灰色集合遍历为空
  • 将白色集合中的对象视为垃圾进行清扫
  • 重置黑色集合对象,将其变为白色,进行下次GC

参考链接:https://studygolang.com/articles/25916

写屏障

在三色标记法中,黑色集合中的对象不能引用无法被灰色对象可达的白色对象。并发标记时,这是go垃圾回收的一个特点,在程序没有执行完,已经在后台进行垃圾回收,这当中如果没有做正确性保障措施,可能会导致漏标,导致实际上可达的对象被清扫掉。于是引入了写屏障, 是在写入指针前执行的一小段代码,以防止并发标记时指针丢失。

参考链接:https://cloud.tencent.com/developer/article/1526095

到此这篇关于“大家一起学Golang——轻描淡写GC垃圾回收”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
大家一起学Golang——轻描淡写GC垃圾回收
Golang垃圾回收机制
golang垃圾回收
Go 语言的垃圾回收算法被吹过头?与Java比如何?
常见的导致mysql中文乱码问题
Go语言的实时GC——理论与实践
mysql中文乱码问题解决方法总结
Go GC垃圾回收机制
Go语言 几个亟待解决的Go语言问题
go语言垃圾回收机制详解

[关闭]
~ ~