Go垃圾回收主要算法

Go语言提供的一个变量GOGC,用来对GC进行控制。该变量表示:最近一次GC过后,总的heap内存比所有可达节点所占用heap内存 大的百分比。如果GOGC=100则表示最近一次GC过后,总的heap内存比所有可达节点所占用heap内存大100%,即总heap内存是可达节点内存的2倍。

该值越大,则GC速度越快,但程序占用的内存较大,GC效果相对不明显。反之,则GC对内存的清理效果明显,但往往需要更多的时间。

Go垃圾回收主要算法 - 图1

GC 算法有四种:

  • 引用计数(reference counting)
  • 标记-清除(mark & sweep)
  • 节点复制(Copying Garbage Collection)
  • 分代收集(Generational Garbage Collection)。