Go GC

作者: ljh123 | 来源:发表于2019-07-18 16:55 被阅读5次

1、什么是GC?
2、为什么会有GC?
3、GC的优点?
4、GC的缺点?
5、Go中的GC历史
6、Go中的GC实现原理(三色标记)
7、Go怎么手动调用GC?

一、什么是GC?
GC是Go语言中的内存自动回收管理器(常称为垃圾回收器)。业界常见的垃圾回收机制有引用计数、标记-清除、分代收集。
1)引用计数:对每个对象维护一个引用计数,当引用该对象的对象被摧毁时,引用计数减一,引用计数为零时回收该对象。
优点:对象可以很快被回收,不会出现内存耗尽或者达到某个阀值时才回收。
缺点:不能很好的处理循环引用(https://www.jianshu.com/p/0cfe42ed237c],而且实时维护引用计数,也有一定的代价。
代表语言:Python、Php、Swift
2)标记-清除:从根变量开始遍历所有引用的对象,引用的对象标记为“被引用”,没有被标记的进行回收。
优点:解决了引用计数的缺点。
缺点:需要STW,就是需要暂时停掉程序运行。
代表语言:Golang(使用三色标记法)
3)分代收集:按照对象生命周期长短划分不同的代空间,生命周期长的放入老年代,而短的放入新生代,不同代有不同的回收算法和回收频率。
优点:回收性能好
缺点:算法复杂
代表语言:JAVA

二、为什么会有GC?
解决开发时的内存管理的麻烦,以及避免内存泄露的麻烦。

三、GC的优点?
不再需要自己写代码进行垃圾回收,避免内存泄露的隐患。

四、GC的缺点?
占用性能,但是在这个性能过剩的时代,可以忽略不计了

五、Go中的GC历史
https://blog.csdn.net/erlib/article/details/51850912

6、Go中的GC实现原理(三色标记)
1)有哪三色?
灰色、黑色、白色
2)三色代表什么意思?
白色:未搜索
灰色:正搜索
黑色:已搜索
3)三色标记的工作原理?
起初所有对象都是白色的
扫描找出所有可达对象,标记为灰色,放入待处理队列
从队列提取灰色对象,将其引用对象标记为灰色放入队列,自身标记为黑色
写屏障监视对象内存修改,重新标色或放入队列

7、Go怎么手动调用GC?
runtime.GC()

相关文章

  • go-内存机制(4)

    go的GC机制 GO的GC是并行GC,也就是说GC的大部分清理和普通的go代码是同时运行的,这让GO的GC流程比较...

  • Go GC

    1、什么是GC?2、为什么会有GC?3、GC的优点?4、GC的缺点?5、Go中的GC历史6、Go中的GC实现原理(...

  • Go语言——垃圾回收GC

    Go语言——垃圾回收GC 参考: Go 垃圾回收原理 Golang源码探索(三) GC的实现原理 Getting ...

  • Golang垃圾回收gc调优

    示例代码 test.go 命令行调用go程序代码,输出gc信息到日志 golang gc 优化思路以及实例分析

  • Go开发关键技术指南:SRS & Others

    Others 关于Go,还有哪些重要的技术值得了解的,下面详细分享。 GC GC一般是C/C++程序员对于Go最常...

  • 申请美国本科留学:美国本科Go Campus项目

    1. 基本概况 关于GC Go Campus项目全称为Go Campus-My Scholarship Progr...

  • 如何在Mac源码安装Go1.5开发环境

    到这里下载Go语言源码包。Go1.4到Go1.5是Go语言脱胎换骨的一次变更,The gc tool chain ...

  • GO—闲聊GC

    1.什么是gc? Garbage Collection 简称为GC,是垃圾回收的意思。GC就是为了回收进程运行时不...

  • GO语言-GC

    引言 垃圾回收机制是高级语言常见的一类内存资源管理方式,C/C++这类语言内存分配及回收很大的主动权在调用者,gc...

  • go gc 分析

    1 先翻译一下runtime 文档中,关于gc的内容(里面涉及GC日志格式) ···原文: https://gol...

网友评论

    本文标题:Go GC

    本文链接:https://www.haomeiwen.com/subject/drallctx.html