美文网首页分布式读书散文
JVM垃圾收集器有哪些?都有啥特点?

JVM垃圾收集器有哪些?都有啥特点?

作者: MCNU云原生 | 来源:发表于2022-08-17 18:44 被阅读0次

    1、Serial

    新生代收集器,单线程,使用复制算法,标记和清理都是单线程,优点是简单高效,劣势是垃圾收集时会出现Stop The World,对于实时性要求高的应用不可接受;

    2、ParNew

    新生代收集器,并行收集,使用复制算法,可以看做是Serial的多线程版本,在多核CPU的场景下性能表现更好;

    3、Parallel Scavenge:

    新生代收集器,基于标记 -复制算法实现,能够并行收集,多线程,主要关注“吞吐量”,目标则是达到一个可控制的吞吐量(Throughput),所谓吞吐量 = 用户线程时间/(用户线程时间+GC线程时间),适合一些对交互响应要求不高的一些后端应用场景;

    4、Serial Old

    老年代单线程收集器,可以看做Serial的老年代版本。

    5、Parallel Old

    老年代并行收集器,使用标记-整理算法,吞吐量优先,可以看做是Parallel Scavenge收集器的老年代版本

    6、CMS

    Concurrent Mark Sweep,使用标记-清除算法,老年代并行收集器,以获取最短回收停顿时间为目标的收集器,具有高并发、低停顿的特点,追求最短GC回收停顿时间。

    7、G1

    Garbage First,采用标记-整理算法,G1的特点是回收整个Java堆,包括了包括新生代和老年代,G1在回收期间,可以有多个GC线程同时工作,有效利用多核计算能力,拥有与应用程序交替执行的能力,部分工作可以和应用程序同时执行,因此,一般来说,不会在整个回收阶段发生完全阻塞应用程序的情况。

    8、Shenandoah

    类似于G1,但是相比G1有一些不同,例如G1分代,而Shenandoah默认不分代,Shenandoah在垃圾回收阶段并发,G1在垃圾回收阶段并行。Shenandoah的强项在于低延迟,不过相应的,由于高运行负担,吞吐量成为了Shenandoah的弱项。

    9、ZGC

    基于动态Region内存布局,以低延迟为首要目标,不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法,回收TB级内存,停顿时间不超过10ms。

    相关文章

      网友评论

        本文标题:JVM垃圾收集器有哪些?都有啥特点?

        本文链接:https://www.haomeiwen.com/subject/xkqsgrtx.html