CMS垃圾收集器详解(定义优缺及原理应用)

CMS垃圾收集器详解(定义优缺及原理应用)-mikechen

CMS垃圾收集器是Java垃圾收集器重要的一种,而且Java面试经常问,下面我就重点来详解CMS垃圾收集器@mikechen

CMS垃圾收集器定义

CMS收集器,全称是Concurrent Mark Sweep,是Java虚拟机中的一种Java垃圾收集器,CMS垃圾收集器它主要用于收集老年代的垃圾。

 

CMS垃圾收集器优缺

CMS垃圾收集器优点

1.并发收集

CMS垃圾收集器采用了并发收集的方式,在垃圾回收的过程中不需要停止应用程序的运行,因此可以减少应用程序的停顿时间,提高应用程序的响应速度。

2.高吞吐量

CMS垃圾收集器在适当的情况下,能够提供很高的吞吐量,也就是说可以在短时间内回收大量的垃圾,使得应用程序的吞吐量得到提高。

 

CMS垃圾收集器缺点

1.内存碎片

CMS垃圾收集器采用的是标记-清除的方式进行垃圾回收,会产生内存碎片,需要额外的空间来进行维护,这可能会导致内存使用效率的下降。

2.CPU占用

在并发收集的过程中,CMS垃圾收集器需要消耗一定的CPU资源,这可能会对应用程序的性能产生影响。

 

CMS垃圾收集器原理

CMS垃圾收集器它主要用于收集老年代的垃圾,主要采用的标记清除垃圾算法。

主要包含四个阶段:初始标记、并发标记、重新标记和并发清除,如下图所示:

CMS垃圾收集器详解(定义优缺及原理应用)-mikechen

1.初始标记

单线程执行,标记出GC Roots能直接关联到的对象,速度较快。

 

2.并发标记

并发执行,用户线程正常运行,垃圾收集线程进行并发标记。

 

3.重新标记

由于并发标记阶段用户线程仍在执行,所以可能会产生垃圾,重新标记阶段就是将并发标记阶段发生变动了的对象标记进行修正。

 

4.并发清除

并发执行,该阶段直接清楚之前标记的垃圾,用户线程可继续执行。

 

CMS垃圾收集器适用

CMS垃圾收集器适用于需要快速响应用户请求,同时也需要高吞吐量的应用程序。

以上就是CMS垃圾收集器的详解,跟多垃圾收集器,请查看:Java垃圾收集器详解(7种Java垃圾收集器)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法