cms和g1垃圾收集器

发布时间 2023-07-20 14:11:13作者: 魅力峰值

一、cms垃圾收集器

 

jdk1.5之后出现

在标记清理方法上做优化

1、初始标记

2、并发标记

3、重新标记

4、并发清除

在1、3会StopTheWorld

 

描述

  1. 初始标记仅仅只是标记GC Root可以直接关联到的对象,速度很快。并发标记是进行 GC Root tracting的过程,重新标记是为了修正并发标记的浮动垃圾。这个过程比初始标记稍稍慢一点点,但是比重新标记要快
  2. 由于整个过程耗时较长的并发标记和并发清理是和用户线程一起工作的,所以停顿时间就比较短

 

 

关键

关键

安全点停顿

并发过程对线程做了优化:在os4核以上,对用户影响很小,4核一下,采用增量式并发收集器,模拟多线程。实际是用户线程和gc线程交互执行。

 

优点

1、并发手机、

2、低停顿

缺点:

1、无法处理浮动垃圾,由于在并发清理过程中,由于与用户线程一起工作,此时用户产生的垃圾,无法清理。并且如果老年代设置的太高,更容易导致full gc产生。

jvm参数 -XX:CmsInitiatingOccupyingFraction

,触发垃圾回收内存百分比降低,减少fullgc的触发

2、cms是标记-清理垃圾回收算法的优化。所以容易产生更多的内存碎片。

-xx:CMSFullGCBeforeCompaction 设置进行几次不压缩的垃圾回收之后,进行内存压缩

 

二、g1垃圾收集器