程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上
三色标记法:垃圾收集器依据可达性分析算法判断对象是否存活时,将遍历GC Roots过程中遇到的对象,按照“是否访问过”这个条件,把对象标记成白色(white)、灰色(gray)、黑色(black)三种颜色。
优点:
可以异步执行,从而可以以中断时间极少的代价或者完全没有中断来进行整个 GC
缺点:
可能存在标记漏标和标记误标的情况,需要额外的处理来解决这些问题。
漏标处理方案有:
CMS:采用的是写屏障 + 增量更新
G1: 采用的是写屏障 + 原汁快照(SATB)
ZGC:采用的是读屏障
白色表示对象尚未被扫描,即未被标记为存活对象。
灰色表示对象已经被扫描,但其引用的其他对象尚未被扫描。
黑色表示对象已经被扫描,并且其引用的其他对象也已经被扫描。
标记过程: