zoukankan      html  css  js  c++  java
  • GC选择之CMS 并发标记清除

    CMS收集器 Concurrent Markup Sweep 并发标记清除
     使用了标记-清除算法 与标记-压缩相比,并发阶段会降低吞吐量
     算法作用在老年代以及永久区(新生代使用ParNew)
     -XX:+UseConcMarkSweepGC
    CMS运行过程
     1.初始标记(用户线程停止)
      根可以关联到的对象
      速度快
     2.并发标记(和用户线程一起)
      主要标记过程,标记全部对象
     3.重新标记(用户线程停止)
      由于并发标记时,用户线程依然进行因此在正式清理前,再做修正。
     4.并发清除(和用户线程一起)
      基于标记结果,直接清理对象
     
    特点:
    1.尽可能降低停顿
    2.会影响系统整体吞吐量和性能
     比如,在用户线程运行过程中,分一半CPU去做CMS GC,系统性能在GC阶段,反应速度就下降一半。
    3.清理不彻底。
     在清理阶段,用户线程还在执行,会产生新的垃圾,无法清理。
    4.因为和用户线程一起执行,不能在空间将满时再清理。
     -XX:CMSInitiatingOccupancyFraction设置触发GC的阈值。 设定老年代空间被使用多少后触发。
     如果不幸内存预留空间不足,就会引起concurrent mode failure.
    5.在CMS遇到空间不足时,可以使用串行收集器作为后备。
    6.做标记清除时,可以不停止应用线程,但会产生内存碎片,而做标记压缩时,会Stop-The-World,但不会产生内存碎片。
     -XX:+UseCMSCompactAtFullCollection Full GC后,进行一次碎片整理。
      整理过程是独占的,会引起停顿时间变长。
     
    减轻GC压力 软件如何架构,代码如何写,堆空间如何分配。

    1.性能的根本在应用。
    2.GC参数属于微调。
    3.GC参数设置不合理,会影响性能,产生大的延时。

  • 相关阅读:
    html5——渐变
    html5——背景
    html5——边框
    html5——私有前缀
    html5——盒子模式
    html5——文本阴影
    html5——颜色
    html5——css选择器
    html5——DOM扩展
    html5——多媒体(一)
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/7078165.html
Copyright © 2011-2022 走看看