HotSpot虚拟机七种垃圾收集器学习笔记

这里整合了hotspot虚拟机的7种垃圾收集器:

一、Serial收集器

        特点:单线程收集器,它不仅仅只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的线程工作,直到它收集完成。

        Serial收集是虚拟机运行在Client模式下的默认新生代收集器。优点是简单而高效,对于限定单个CPU的环境来说,Serial没有线程开销,专心做垃圾收集自然可以获得最高的单线程收集效率。

二、ParNew收集器

        ParNew收集器其实就是Serial收集器的多线程版本。它是许多运行在Server模式下的虚拟机中首选的新生代收集器,目前只有它能与CMS收集器配合工作。(CMS收集器是hotspot虚拟机中第一款正真意义上的并发收集器,实现了让垃圾收集线程与用户线程(基本)同时工作)。ParNew收集器开启的线程数与CPU的数量相同,在CPU非常多的环境下,可以使用-XX:ParallelGCThreads参数来限制垃圾收集的线程数。

三、Parallel Scavenger收集器

        又称为“吞吐量优先”收集器,采用的复制算法的收集器。CMS等收集器的关注点是尽可能的缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenger收集器的目标则是达到一个可控制的吞吐量(Throughput)。

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

        Parallel Scavenger收集器提供两个参数来精确控制吞吐量:

        1)控制最大垃圾收集停顿时间的:-XX:MaxGCPauseMillis参数;

        2)直接设置吞吐量大小的:-XX:GCTimeRatio参数。

        另外,Parallel Scavenger收集器还有CC自适应的调节策略。

四、Serial Old收集器

        单线程收集器,使用的是“标记-整理”算法。该收集器的主要意义是在Client用户下使用,如果在Server模式下使用,则主要用途是:在JKD1.5以及以前的版本中与Parallel Scavenger收集器配合使用。另一种用途是作为CMS收集器的后备预案,在并发收集发生Concurrent Mode Failure时使用。

五、Parallel Old收集器

        是Parallel Scavenger收集器的老年代版本,使用多线程和“标记-整理”算法。

六、CMS收集器

        CMS(ConcurrentMark Sweep)并发标记清除收集器是一种以获取最短停顿时间为目标的收集器。包含四个步骤:

        1)初试标记;

        2)并发标记;

        3)重新标记;

        4)并发清除。

        包含三个缺点:

        1)CMS收集器对CPU资源非常敏感;

        2)无法处理浮动垃圾(FloatingGarbage),可能出现Concurrent Mode Failure失败而导致另一次Full GC的产生。

        3)收集结束时会产生大量空间碎片。

七、G1收集器(GarbageFirst)

        G1收集器是面向服务端应用的垃圾收集器。具有的特点是:

        1)并行与并发;

        2)分代收集;

        3)空间整合;

        4)可预测停顿。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值