Serial
多线程
是什么:使用单线程清理堆,Client虚拟机默认ide
能作什么:适用于单CPU、应用程序内存小于100MB的场景spa
为何:Minor GC和Full GC都会使应用线程暂停,但由于堆的总量小,影响轻微,其余收集器在面对这种状况的时候也没法发挥优点线程
Throughputorm
是什么:使用多线程清除及压缩整理堆,Server虚拟机默认内存
能作什么:适用大多数场景,对90%、99%响应时间要求高的应用资源
为何:多线程的方式处理Minor GC和Full GC使得处理速度提高,同时在Full GC时会对老年代压缩整理虚拟机
CMSit
是什么:启用后台线程按期对老年代进行扫描,属于Concurrent垃圾收集器class
能作什么:下降Full GC的可能性,从而减小应用线程的停顿,对平均响应时间要求高的应用
为何:耗费额外的CPU资源运行后台线程,对堆的状况进行扫描,同时对于清理中产生的碎屏不进行整理,因此应用的停顿时间会下降
G1
是什么:将堆划分为若干区域的后台线程收集器,属于Concurrent垃圾收集器
能作什么:避免处理超大堆时产生的时间停顿,下降Full GC的发生
为何:将大堆划分为若干区域后,在老年代的垃圾回收中,启用后台线程,每次只对垃圾较多的分区进行垃圾回收,因此速度快。回收时旧区域剩余数据会复制到新区域,在此过程当中就区域数据扔可以使用,清理后只需改变指向,因此无需停顿应用线程