G1GC 读书笔记
一、标记
- 初始标记。暂停应用程序线程(STW),根扫描,查找内存区域中和根直接引用的对象,查找到则标记,被查到到的对象如果有子对象,则子对象不会被标记;(标记:标记为存活的对象)
- 并发标记。GC线程和应用程序线程是并发执行的,不会STW;并发标记前会执行 SATB (Snapshot at begining) 即把当前对象的引用关系做一个快照并保存。在并发标记阶段应用程序可能会在新的区域产生新的对象,这些对象也会被标记为存活的对象。并发标记阶段存活对象的子对象也会被标记;
- 最终标记。
- 统计计数。