【JVM学习之路】垃圾回收器

CMS回收器

  • 在JDK1.5时期,HotSpot推出了一款在强交互应用中几乎有划时代意义的垃圾收集器:CMS(Concurrent-Mark-Sweep)收集器,这款收集器是HotSpot虚拟机中第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程同时工作
  • CMS收集器的关注点尽可能缩短垃圾收集时用户线程的停顿时间。停顿时间越短(低延迟)就越适合与用户交互的程序,良好的响应速度能提升用户体验。(目前很大一部分的Java引用集中在互联网站或者B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。)
  • CMS的垃圾收集算法采用标记-清除算法,并且也会“Stop-the-world”

不幸的是,CMS作为老年代的收集器,却无法与JDK1.4.0中已存在的新生代收集器Parallel Scavenge配合工作,所以在JDK1.5中使用CMS来收集老年代的时候,新生代智能选择ParNew或者Serial收集器中的一个。
在G1出现之前,CMS使用还是非常广泛的。一直到今天,仍然有很多西戎使用CMS GC。

CMS工作原理


CMS整个过程比之前的收集器要复杂,整个过程分为4个主要阶段,即初始标记阶段、并发标记阶段、重新标记阶段和并发清除阶段。

posted @ 2021-04-14 08:21  沉淀技术这十年  阅读(36)  评论(0编辑  收藏  举报