ZGC,来自未来?
10种GC垃圾回收器
Serial 单线程最原始已停用,Stop The World来清理,效率低。
升级的重点在于减少STW时间。
四个阶段:
main方法里的对象,是root对象,在初始的STP阶段,它们会被注有初始标记,它们会形成对象图,在工作过程中产生大量的垃圾。
在工作过程中,不需要STP,没用的垃圾会被标为并发标记。
重新标记,会STP来,重新标记,避免之前发生的漏标和错标。
最后,在并发过程中进行清理。
CMS和G1都是采用三色标记。
如上情况,D会被漏标。
CMS的解决方案:
Incremental Update
但是,并发状态下,依然会漏标。
G1(Garbage First)的解决方案:
Snapshot At the Begining
当B->D消失时,把这个引用推到了GC堆栈,保证还能被GC扫描到。
G1 Rset浪费空间,
ZGC:
性能强大,号称Zero Paused GC