基本概念
STW
:Stop the World机制:在执行垃圾收集算法时,为了保证正确性,Java应用程序的其他所有除了垃圾收集收集器线程之外的线程都被挂起,它会导致系统全局的停顿。
三色标记法
:采用白灰黑三种颜色标记对象,开始所有对象都是白色的,然后把其中全局变量和函数栈里的对象置为灰色。第二步把灰色的对象全部置为黑色,然后把原先灰色对象指向的变量都置为灰色,以此类推。等发现没有对象可以被置为灰色时,所有的白色变量就一定是需要被清理的垃圾了。如下图所示
见文章
参考
关于Golang GC的一些误解–真的比Java GC更领先吗?
go GC
- Mark 标记阶段
- Mark Setup 阶段- STW
- Marking阶段- 并发执行
- Mark终止阶段 - STW
- Sweep 清理阶段
在Go
1.12
版本里,Go垃圾收集器依然使用非分代的并发的三色标记清理算法
Go垃圾收集器的行为分为两个大阶段Mark(标记)阶段和Sweep(清理)阶段。Mark阶段又分为三个步骤,其中两个阶段会有STW(Stop The World),另一个阶段也会有延迟,从而导致应用程序延迟并降低吞吐量