美文网首页
垃圾收集器ParNew&三色标记法

垃圾收集器ParNew&三色标记法

作者: hangjun | 来源:发表于2021-10-26 23:48 被阅读0次

    1. 垃圾收集算法

    1.1 分代收集理论

    1.2标记-复制算法:

    概念
    缺点:浪费空间

    1.3.标记-清除算法:

    概念:
    缺点:
    1效率问题(如果需要标记的对象太多,效率不高)
    2.空间问题(标记清除后会产生大量不连续的碎片)

    1.4标记-整理算法

    概念:
    缺点:
    1.清理内存碎片需要时间

    垃圾收集器

    收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。
    1.1Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)
    1.2ParallelScavenge收集器(-XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代)
    1.3ParNew收集器(-XX:+UseParNewGC))
    ParNew收集器其实跟Parallel收集器很类似,区别主要在于它可以和CMS收集器配合使用。
    新生代采用复制算法,老年代采用标记-整理算法。
    1.4CMS收集器(-XX:+UseConcMarkSweepGC(old))
    CMS(ConcurrentMarkSweep)
    优点:
    缺点:

    收集器是一种以获取最短回收停顿时间为目标的收集器。它非常符合在注重用户体
    验的应用上使用,它是HotSpot虚拟机第一款真正意义上的并发收集器,
    它第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。
    从名字中的MarkSweep这两个词可以看出,CMS收集器是一种“标记-清除”算法实现的,它的运作过程相比于前面几种垃圾收集器来说更加复杂一些。

    整个过程分为四个步骤:
    初始标记:
    暂停所有的其他线程(STW),并记录下gc,roots直接能引用的对象,速度很快。
    并发标记:
    并发标记阶段就是从GCRoots的直接关联对象开始遍历整个对象图的过程,这个过程耗时较长但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行。因为用户程序继续运行,可能会有导致已经标记过的对象状态发生改变。
    重新标记:
    并发清理:
    并发重置:

    核心参数配置:
    1-XX:+UseConcMarkSweepGC:启用cms
    2.-XX:ConcGCThreads:并发的GC线程数
    3.-XX:+UseCMSCompactAtFullCollection:FullGC之后做压缩整理(减少碎片)
    4.-XX:CMSFullGCsBeforeCompaction:多少次FullGC之后压缩一次,默认是0,代表每次FullGC后都会压缩一次
    5.-XX:CMSInitiatingOccupancyFraction:当老年代使用达到该比例时会触发FullGC(默认是92,这是百分比)
    6.-XX:+UseCMSInitiatingOccupancyOnly:只使用设定的回收阈值(-XX:CMSInitiatingOccupancyFraction设定的值),如果不指定,JVM仅在第一次使用设定值,后续则会自动调整
    7.-XX:+CMSScavengeBeforeRemark:在CMSGC前启动一次minorgc,目的在于减少老年代对年轻代的引用,降低CMS GC的标记阶段时的开销,一般CMS的GC耗时80%都在标记阶段
    8.-XX:+CMSParallellnitialMarkEnabled:表示在初始标记的时候多线程执行,缩短STW
    9.-XX:+CMSParallelRemarkEnabled:在重新标记的时候多线程执行,缩短STW;

    垃圾收集底层算法实现
    三色标记:
    黑:有引用
    灰:存在引用,中间态状态
    白:无引用

    多标-浮动垃圾
    漏标-读写屏障:有两种解决方案:增量更新(IncrementalUpdate)和原始快照(SnapshotAtTheBeginning,SATB)

    增量更新:引用赋值給新对象的时候,记录下来这些引用。在重新标记扫描(重新标记会STW)
    原始快照:引用被删除之后,记录下来这些引用,这些引用标记为黑色,代表有引用不能被删除,所以会导致浮动垃圾,下个gc会清理

    写屏障:类似AOP的代码,跟内存屏障不一样

    读屏障:

    CMS:增量更新
    G1:原始快照 SATB

    相关文章

      网友评论

          本文标题:垃圾收集器ParNew&三色标记法

          本文链接:https://www.haomeiwen.com/subject/amcualtx.html