JVM四种垃圾收集器

Serial

是什么:使用单线程清理堆,Client虚拟机默认

能做什么:适用于单CPU、应用程序内存小于100MB的场景

为什么:Minor GC和Full GC都会使应用线程暂停,但因为堆的总量小,影响轻微,其他收集器在面对这种情况的时候也无法发挥优势

Throughput

是什么:使用多线程清除及压缩整理堆,Server虚拟机默认

能做什么:适用大多数场景,对90%、99%响应时间要求高的应用

为什么:多线程的方式处理Minor GC和Full GC使得处理速度提升,同时在Full GC时会对老年的压缩整理

CMS

是什么:启用后台线程定期对老年代进行扫描,属于Concurrent垃圾收集器

能做什么:降低Full GC的可能性,从而减少应用线程的停顿,对平均响应时间要求高的应用

为什么:耗费额外的CPU资源运行后台线程,对堆的情况进行扫描,同时对于清理中产生的碎屏不进行整理,所以应用的停顿时间会降低

G1

是什么:将堆划分为若干区域的后台线程收集器,属于Concurrent垃圾收集器

能做什么:避免处理超大堆时产生的时间停顿,降低Full GC的发生

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

猜你喜欢

转载自blog.51cto.com/zuohao1990/2318564
今日推荐