CMS垃圾收集器
2021-04-16 20:54:49 0 举报
CMS垃圾收集器
作者其他创作
大纲/内容
3
4
Safepoint
无法处理“浮动垃圾”,在并发标记和并发清理阶段因为是与用户线程一起执行的,所以在这两个阶段会产生新的垃圾,这些新的垃圾就叫“浮动垃圾”,而这些浮动垃圾只能等待下一次垃圾收集时再清理。
如何让线程停顿?
字节码执行引擎
1
CPU 2
CPU 3
CMS作用于老年代
CMS的缺点:
遍历整个图来对对象进行标记
CMS默认启动的核心线程数是(处理器核心数量+3)/4
1、抢先式中断2、主动式中断:设置一个标志位,各个线程执行过程中不断地去轮询这个标志位,一旦发现这个标志位为真就让当前线程在最近的安全点挂起。
GC线程
JIT即时编译器
重置线程
CPU 1
重新标记
用户线程
STW
初始标记
Safepoint:生成oopMap的点。
删除标记阶段判断已经死亡的对象
并发标记
oopMap:将对象内什么偏移量对应的类型的数据计算出来,在即时编译的过程中,在特定的位置记录栈和寄存器哪里位置是引用
垃圾收集器
并发清理
5
CPU 0
2
标记与GC Roots能直接关联的对象
修正并发标记期间,因用户线程继续运作而导致标记产生变动的那一部分对象的标记记录
Minor GC:针对新生代Major GC:针对老年代Full GC:针对整个堆
0 条评论
下一页