大厂面试题-说一些CMS垃圾回器的工作原理

目录

问题分析

问题解答


题分析

其实不管是什么类型的垃圾回收器,本质上就两个能力,识别垃圾和清理垃圾。

所以理解了这个本质,再去学习不同的垃圾回收器,就会变得更加简单

识别垃圾的算法无非就是引用计数法、可达性分析算法。

而清理垃圾的算法包括标记清除、复制、标记整理、分代收集等。

下面来看下这个问题的正确回答。

题解答

CMS(Concurrent Mark and Sweep)是一种低停顿垃圾回收

它主要通过初始标记阶段和并发标记阶段两个并发的阶段来实现垃圾回收:

它的整体流程可以分成四个步骤

    1、初始标记(CMS initial mark):这个阶段需要Stop The Word,来标记哪些对象是需要回收的,这个过程只需要标记GC Roots能够直接关联的对象,所以速度很快,对性能影响比较小。

    2、并发标记(CMS concurrent mark):扫描整个堆中的对象,标记所有不需要回收的对象。这个阶段不需要Stop The Word,在应用程序运行过程中进行标记。

    3、重新标记(CMS remark):为了修正并发标记期间,应用程序同步运行导致标记产生变动的那一部分对象。这个阶段需要Stop The Word。

    4、并发清除(CMS concurrent sweep),CMS会并发执行清除操作,同时应用程序继续运行,最大力度减少对性能的影响。

大厂面试题-说一些CMS垃圾回器的工作原理_第1张图片

你可能感兴趣的:(JVM面试题,jvm,面试,1024程序员节,java)