它使用的是标记清除算法,同时又是一个使用多线程并行回收的垃圾回收器。CMS工作时主要步骤有初始标记、并发标记、预清理、重新标记、并发清除和并发重置。并发重置是指在垃圾回收完成后,重新初始化CMS数据结构和数据,为下一次垃圾回收做好准备。在整个CMS回收过程中,默认情况下,在并发标记之后,会有一个预清理的操作。预清理是并发的,除了为正式清理做准备和检查以外,预清理还会尝试控制一次停顿时间。由于重新标记是独占CPU的,如果新生代GC发生后立即触发一次重新标记,那么一次停顿时间可能很长。这样,最大程度上避免新生代GC和重新标记重合,尽可能减少一次停顿时间。

简单分析java中CMS回收器