垃圾收集器分类:

垃圾收集器分类:

1.serial收集器:单线程,会stop the world ,暂停其他所有工作线程(新生代收集器),工作流程图:

垃圾收集器分类:_第1张图片

优点:简单高效

2:ParNew收集器:serial收集器的多线程版本,目前是jvm1.8的默认收集器(新生代收集器),是除serial收集器外,目前唯一可以与CMS(老年代收集器)收集器配合使用的收集器,多线程收集器,用户线程和垃圾收集线程可以同时运行,可以使用-XX:+UserParNewGC来强制使用。工作流程图:

垃圾收集器分类:_第2张图片

3:Parallel Scavenge(PS收集器):多线程收集器,(新生代收集器),目标是到达可控制的吞吐量。

-XX:MaxGCPauseMillis:控制垃圾收集器的停顿时间

-XX:GCTimeRiato:吞吐量的大小

可开启GC的自适应策略,与其他收集器的区别

4:Serial Old收集器:Serial收集器的老年版本,整理算法

5:Parallel Old收集器:Parallel Scavenge收集器的老年版本;

6:CMS收集器:

         收集器执行回收的流程:

         初始标记(STW)---并发标记---重新标记(STW)---并发清除

   缺点:资源敏感,无法处理浮动垃圾(用户线程和垃圾收集线程同时运行,在用户线程执行的过程中会再次产生垃圾,目前只能下次回收),标记清除算法会产生大量的碎片空间,可能会造成无法给过大的对象分配内存空间。

7:G1垃圾收集器:

保留分代的思想,但是在屋里空间上不存在新生代与老年代。

优点:并行与并发,充分利用多个CPU来降低Stop the world停顿的时间

          分代收集:可以独立管理整个对空间而不需要和其他收集器配合

          空间整合:采用标记--整理的方式,不会存在过多的内存碎片

          可预测的停顿:建立可预测停顿的时间模型、

G1垃圾收集器执行流程:

初始标记---并发标记---最终标记---筛选清除

 

 

你可能感兴趣的:(jvm)