JVM四种垃圾收集器

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的发生

为何:将大堆划分为若干区域后,在老年代的垃圾回收中,启用后台线程,每次只对垃圾较多的分区进行垃圾回收,因此速度快。回收时旧区域剩余数据会复制到新区域,在此过程当中就区域数据扔可以使用,清理后只需改变指向,因此无需停顿应用线程

相关文章
相关标签/搜索