zoukankan      html  css  js  c++  java
  • JVM之CMS收集器

    CMS(Concurrent Mark Sweep) 并发收集,低停顿,适合响应时间敏感的应用使用。

    • 初始标记 Initial mark:标记 GC Roots 能够关联到的对象。stop-the-world。
    • 并发标记 Concurrent mark:GC Roots tracing,此时业务线程仍在运行。
    • 重新标记 remark:重新标记处理并发标记过程中因为用户程序同时运行而导致标记产生变动的对象的标记记录。stop-the-world。
    • 并发清除 Concurrent sweep:清除无用对象。

    初始标记和重新标记占用时间比较短。

    缺点:

    • 并发阶段占用cpu资源,拖慢用户程序,降低吞吐量,CMS默认启用(CPU + 3)/4个线程执行。
    • 无法处理浮动垃圾(Floating Gorbage),并发清理阶段用户程序产生的垃圾,成为浮动垃圾,无法被当次处理。为了预留用户程序运行使用内存,CMS需在老年代一定比例时就进行收集,通过-XX:CMSInitiatingOccupancyFraction设置老年代触发CMS的堆内存使用比例。
    • 基于标记---清除算法的CMS,会使老年代产生很多空间碎片,不利于大对象的使用,使用-UseCMSCompactAtFullCollection(默认true)来设置在CMS顶不住将要进行Full GC时进行碎片压缩整理,此设置会造成停顿,同时可以设置-XX:CMSFullGCsBeforeCompaction(默认0,即每次Full GC都进行碎片整理)来设置执行碎片整理的间隔Full GC次数,即,执行多少次不压缩的Full GC后,执行一次带压缩整理的Full GC。
  • 相关阅读:
    手游产品经理初探(十)竞品分析
    Openfire开发配置,Openfire源码配置,OpenFire二次开发配置
    code forces 148D Bag of mice (概率DP)
    Android Studio怎样更改JDK和SDK的路径?
    bbb
    收集了三年的最好的设计站点
    C# foreach 有用方法具体解释
    Java 过滤器的作用
    SVD神秘值分解
    《C语言编写 学生成绩管理系统》
  • 原文地址:https://www.cnblogs.com/niejunlei/p/5989226.html
Copyright © 2011-2022 走看看