美文网首页
Day11 三色标记 颜色指针

Day11 三色标记 颜色指针

作者: 小周爱吃瓜 | 来源:发表于2022-03-19 22:52 被阅读0次

    八股文点到为止,个人觉得没必要深究.

    • XX: UseG1GC开启G1垃圾收集器

    • XX: G1HeapRegionSize 设置Region的大小

    • XX: ParallelGCThread 并行GC工作的线程数

    • XX: InitiiatiingHeapOccupanccyPercent 默认45%,代表GC堆达到多少利用率开始收集垃圾.

    • 垃圾收集器选择场景
    1. 调整堆大小让服务器来选择
    2. 内存<100M 串行收集器
    3. 响应时间 < 1s,并发收集器
    4. 停顿时间>1秒,并行或者jvm自己选择

    垃圾收集器底层三色标记算法

    因为 GC roots可达性分析算法在遍历的过程中遇到对象,看他是否被访问过,按照颜色区分.

    • 白色:
      未被标记的对象

    • 灰色:
      自身被标记,成员变量未被标记

    • 黑色
      自身和成员都被标记了

    初始标记,并发标记(多线程).

    可能出现漏标的情况,但是重新标记需要STW,于是才出现了读写屏障.
    于是我们对其进行拦截,在读写前后,将对象G给记录下来.
    就是类似拦截器.

    说白了就是:

    并发标记情况下,漏标了,或者标记错了,重新标记需要stw..
    所以引入类似拦截器的功能,设置读写屏障,在赋值前后记录值.

    void write(){
        before  //写前操作 barrier
      value =   new_value;
        after //写后操作
    }
    
    void read(){
      load_barrier //读屏障
      field = new value //赋值操作.
    }
    

    相关文章

      网友评论

          本文标题:Day11 三色标记 颜色指针

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