• 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收集器
      待定
  • 相关阅读:
    关于神经网络的思考
    PyCaret(Python自动化机器学习)自定义交互式解释性模型
    基于PID算法下STM32控制的坡道行驶电动小车(含源码)
    创意指南丨VR游览沉浸式空间体验
    【k哥爬虫普法】非法入侵计算机信息系统,获取1500万余条个人信息!
    世界银行264个国家1437项统计指标
    Dubbo高手之路6,Dubbo 服务治理详解
    uniapp中使用编辑器editor
    Python sorted()函数
    35分钟了解sql注入-盲注(三)
  • 原文地址:https://blog.csdn.net/lamwolf/article/details/128212207