• JVM之垃圾收集器三


    新生代收集器

    • Serial收集器
      Serial收集器是最古老、最稳定以及效率高的串行收集器,可能会产生较长的停顿,只使用一个线程去回收。
      它是采用复制算法的新生代收集器。它是一个单线程收集器,只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是它在进行垃圾收集时,必须暂停其他所有的工作线程,直至Serial收集器收集结束为止(“Stop The World”)。
      这项工作是由虚拟机在后台自动发起和自动完成的,在用户不可见的情况下把用户正常工作的线程全部停掉,这对很多应用来说是难以接受的。
      它是HotSpot虚拟机运行在Client模式下的默认的新生代收集器。
      它有着优于其他收集器的地方:简单而高效,对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得更高的单线程收集效率。
    • ParNew收集器
      ParNew收集器其实就是Serial收集器的多线程版本。
      它是采用复制算法的多线程的新生代收集器,在进行垃圾收集时,跟Serial收集器一样也会产生“Stop The World”。
    • Parallel Scavenge收集器
      Parallel Scavenge时一个多线程使用复制算法的新生代收集器。
      Parallel Scavenge收集器的特点与其他收集器不同,CMS等收集器的关注点是尽可能缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标是达到一个可控制的吞吐量。
      停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户体验。而高吞吐量则可以高效率地利用CPU时间,尽快完成程序地运算任务,主要适合在后台运算而不需要太多交互的任务。
      Parallel Scavenge收集器提供了一个参数-XX:+UseAdaptiveSizePolicy,这是一个开关参数,打开参数后,就不需要手工指定新生代的大小(-Xmn)、Eden和Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了。虚拟机会根据当前系统地运行情况收集性能监控信息,动态调整这些参数以提供最合适地停顿时间或者最大地吞吐量,这种方式称为GC自适应地调节策略。自适应调节策略也是Parallel Scavenge收集器与ParNew收集器地一个重要区别。

    老年代收集器

    • Serial Old收集器
      Serial Old收集器是Serial收集器地老年代版本,它同样是一个单线程收集器,使用标记-整理算法。
      此收集器地主要意义也是在于给Client模式下的虚拟机使用。
    • Parallel Old收集器
      Parallel Old收集器是Parallel Scavenge收集器的老年代版本,使用多线程和标记-整理算法。
      在注重吞吐量以及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器。
    • CMS收集器
      CMS收集器是一种以获取最短回收停顿时间为目标的收集器。
      它是使用标记-清除算法的老年代回收器。
    • G1收集器
      待定
  • 相关阅读:
    C. Cyclic Permutations(组合数学+单峰序列)
    使用Azure AI Search和LlamaIndex构建高级RAG应用
    开发日志:Kylin麒麟操作系统部署ASP.NET CORE
    eyb:SpringSecurity的使用(四)
    深度学习检测小目标常用方法
    5.26机器人基础-DH参数 正解
    用acme.sh给网站域名,申请免费SSL永久证书(自动续期)
    Level-based Foraging 多智能体游戏仿真环境
    【ENOVIA】MBOM经理概述 | 达索系统百世慧®
    小谈设计模式(19)—备忘录模式
  • 原文地址:https://blog.csdn.net/lamwolf/article/details/128212207