• 垃圾收集器


    1.Serial收集器

      进行垃圾收集时,需要暂停其他所有的工作线程(Stop the world),知道它完成收集工作。暂停所有工作线程带来不良的用户体验,但由于其简单而高效,Client模式下的虚拟机仍然是个很好的选择。

    2.ParNew收集器

      Serial收集器的多线程版本,是许多运行在Server模式下的虚拟机首选的新生代收集器(一个原因是只有它才能与CMS收集器配合工作)。单CPU下效率比起Serial收集器没有提高甚至由于存在线程交换开销,还不如Serial收集器。

    3.Parallel Scavenge收集器

      其他收集器关注点在于尽可能缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的关注点是达到一个可控的吞吐量(吞吐量=运行用户代码时间/垃圾收集时间)。停顿时间越短越适合与用户交互的程序,提升用户体验,高吞吐量则可以高效利用CPU时间,适合后台运算而不需要太多交互的任务。

      -XX:MaxGCPauseMills 参数控制垃圾收集停顿时间,缩短时间的代价是新生代空间变小,垃圾收集随之更加频繁。

      -XX:GCTimeRatio 参数是垃圾收集时间占总时间的比率,即吞吐量的倒数。

    4.Serial Old收集器

      Serial收集器的老年代版本。单线程收集器,使用“标记-整理”算法。

    5.Pareallel Old收集器

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

    6.CMS(Concurrent Mark Sweep)收集器

      采用“标记-清除”算法实现,整个过程包括4个步骤:初始标记、并发标记、重新标记和并发清除。其中初始标记和重新标记依然需要 Stop the world。

      初始标记只是标记GC Roots能关联到的对象,速度很快;并发标记进行GC Roots Tracing;重新标记是为了修正并发标记期间因用户程序继续运行而导致标记变动的对象的标记。

    7.G1(Garbage First)收集器

      面向服务器端的垃圾收集器。

      

  • 相关阅读:
    蓝牙遥控小车设计(二)——车体搭建和利用串口遥控小车
    WIN7下使用sublime text3替代arduino IDE(安装方法和所遇到的问题)
    在使用Arduino中遇到的问题(无法使用中文注释、程序无法下载)
    python 任务调度模块sched
    使用__all__限制模块可被导入对象
    python判断任务是CPU密集型还是IO密集型
    使用__slots__限制实例的属性
    使用装饰器获取被调用函数的执行的时间
    python上下文管理器
    http协议以及http1.0和http1.1的区别
  • 原文地址:https://www.cnblogs.com/yitong0768/p/4557030.html
Copyright © 2020-2023  润新知