垃圾回收三色标记法
垃圾回收器三色标记为了切换回来继续扫描,而不是重新开始扫描

刚开始所有对象都是白色对象,标记后成为黑色对象

灰色就是孩子还没被找到,所有孩子都已经找到的对象标记后下次扫描就忽略他

下一个时间片轮询回来的时候还是去灰色继续扫描
消失的两种状态 :
1.垃圾回收线程停止而业务线程继续执行的过程中,B指向D的引用失效了,所以CMS不建议老年代100%满了再gc,因为可能存在浮动垃圾,所以有参数,达到总空间的多少的时候.开始回收进程

A->D诞生,B->D消失,问题出现 漏标 
CMS解决方案 吧A变为灰色 通过写屏障aop当发生引用就把A变灰

一个线程写屏障变成灰,标记完2,1此时已经为灰,垃圾回收线程m2进来一看A为黑色,4又漏标

必须remark阶段 stw
cms两个毛病,浮动垃圾还有remarkstw
G1:如果发生黑的指向白的,我把引用关系记录一下 ,把引用放在专门记录引用的堆栈里面 ,就是快照


记录专门的引用,看有没有别的关系指向D,有的话D变灰色,没有就是垃圾 专门的堆栈记录引用关系

G1不分代,分区 物理分区,逻辑分代
三色算法+SATP解决了并发的问题,可以一边往里扔一边清楚,还能动态变e和o区


浙公网安备 33010602011771号