CMS – 浮动垃圾
在垃圾回收过程中标记过程中产生的垃圾,被理解为浮动垃圾,这种垃圾没必要去在乎,影响不大,在下一次垃圾回收的时候会被垃圾回收器回收。
CMS – 错标
一个资源在被标记为垃圾的时候,突然另一个资源与之相连,成为了有用的资源,如果资源被清除,会带了问题。
CMS – 重新标记
在标记过程中,可能有些资源被错误标记,所以需要重新标记。这个过程属于STW。
重新标记完成,下一步就是并发处理,把标记为垃圾的资源清楚,这个过程也有可能会产生浮动垃圾,但没有关系,下次标记清除的时候会被处理。
CMS 从线程角度
过程简述:
先经过初始标记,找到根对象,可能会产生浮动垃圾,但没影响,等待下次标记
再经过并发标记,在标记过程中可能会产生错标
重新标记会对错标进行修正
修正好以后,进行并发处理,这时也有可能会产生浮动垃圾,但没影响,等待下次标记
什么情况下才选择使用CMS收集器呢
CMS的调优
JDK8默认垃圾回收器
jdk8环境下,默认使用 Parallel Scavenge(新生代)+ Serial Old(老年代)
用 Parallel Scavenge(新生代)+ Serial Old(老年代)