JVM垃圾收集器

目录

1.GC垃圾收集器

2.垃圾收集器分类

1.按照执行原理分类:

单线程收集器:

多线程收集器:

并发收集器:

G1收集器

2.按照作用区域分类:

新生代:

老年代:

整个Java堆:

3.Serial垃圾收集器

4.Serial Old垃圾收集器

5.ParNew垃圾收集器

6.Parallerl Scavenge收集器

7.Parallel Old收集器

8.CMS收集器

9.G1收集器

10.吞吐量


1.GC垃圾收集器

1.JVM针对新生代与老年代分别提供了不同的垃圾回收器

2.Java堆内存分为新生代与老年代,新生代采用复制和标记清楚垃圾算法,老年代使用标记整理算法

2.垃圾收集器分类

1.按照执行原理分类:

单线程收集器:

        Serial垃圾收集器

        Serial Old垃圾收集器

多线程收集器:

        ParNew垃圾收集器

        Parallel Scavenge垃圾收集器

        Parallerl Old垃圾收集器

并发收集器:

        CMS收集器

G1收集器

2.按照作用区域分类:

新生代:

           Serial垃圾收集器

           Parallel Scavenge垃圾收集器

           ParNew垃圾收集器

老年代:

        Serial Old垃圾收集器

        Parallerl Old垃圾收集器

        CMS收集器

整个Java堆:

        G1收集器

3.Serial垃圾收集器

定义:用于新生代,是单线程收集器,使用复制算法

缺点:单线程完成垃圾回收,在进行垃圾回收时,必须暂停其他所有工作线程,直到垃圾收集结束

4.Serial Old垃圾收集器

定义:用于老年代,是单线程收集器,使用标记整理算法

用途:jdk5.0之前版本与新生代Parallerl Scavenge收集器搭配使用

          在老年代中作为CMS收集器的后备垃圾收集方案

5.ParNew垃圾收集器

定义:多线程收集器,使用复制算法,是JVM在Server模式下新生代的默认垃圾回收器

缺点:和Serial一样,多线程进行垃圾回收时也要暂停其他所有工作线程

6.Parallerl Scavenge收集器

定义:多线程垃圾收集器,使用复制算法,用于新生代

优点:使得程序达到一个可控的吞吐量,高吞吐量能够最高效率利用CPU时间;采用自适应调节策略

7.Parallel Old收集器

定义:用于老年代,使用标记整理算法,是多线程垃圾收集器

用处:能够在老年代提供吞吐量优先的垃圾收集器

8.CMS收集器

定义:CMS(Concurrent mark sweep),用于老年代多线程垃圾收集器,使用标记清除算法,属于并发执行的垃圾收集器

作用:获取最短垃圾回收停顿时间,从而提高用户体验

过程:

        初始标记:标记GC Roots能直接管理的对象,需要暂停所有工作线程

        并发标记:进行GC Roots跟踪,和用户线程一起工作,无需暂停工作线程

        重新标记:修正在并发标记期间,因用户程序工作导致标记变动的标记记录

        并发清除:清楚GC Roots不可达对象,无需暂停工作线程

9.G1收集器

定义:G1(Garbage First)使用标记整理算法

优点:不会产生内存碎片

           可以精确控制停顿时间,实现低停顿的垃圾回收

           将整个Java堆内存划分为几个固定区域优先回收垃圾最多的区域

10.吞吐量

定义:Throughput,CPU用于运行用户代码的时间 / CPU总消耗时间

           吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 垃圾收集时间)

你可能感兴趣的:(jvm,java,算法)