CMS收集器
(标记-清除),它是一种以获取最短回收停顿为目标的收集器。目前很大一部分应用集中在互联网和B/S架构的服务端上,这种应用非常重视响应时间,而这个收集器就非常符合需求。它可以做到边打扫垃圾边扔垃圾的收集器。优点很大,缺点也不少。效率意味着占用CPU资源,用这个收集器会使应用程序变慢;另外它无法处理浮动垃圾,因为它采用的标记-清除算法,就是先标记,在清除,那么有一些垃圾产生是在标记之后,那只好等待下一次GC才能回收了。如果CMS运行期间无法满足程序需求,那么就会临时启用Serial Old收集器来重新进行老年代的收集;最后是该垃圾收集器会造成很多垃圾碎片。因此在产生了大量碎片后,如果无法给大对象分配内存就会触发一次Full GC,Full GC将会导致应用程序暂停。为了解决这个问题,CMS收集器提供了一个参数,默认是开启的。即不够使用的时候进行Full GC是否开启内存碎片的合并整理。如果开启了之后那么停顿的时间会变长。为了解决这一个问题又出现了另一个参数,就是进行多次不压缩的Full GC时来一次带压缩的,就是碎片整理间歇化。于是出现了G1收集器。