Java虚拟机随记

1、分配担保机制:当在新生代无法分配内存的时候,把新生代的对象转移到老生代,然后把新对象放入腾空的新生代。

2、判断对象是否存活

     1)引用计数法:对象有一个引用计数器,每被引用一次则加1,引用失效则减一;当引用计数器为0时,则对象死亡。

     2)可达性分析法:以GC Roots对象开始搜索,寻找节点所走过得引用链,一个对象找不到任何一条到GC Roots的引用链时,则对象死亡。

 

3、CMS垃圾回收器:第一款真正意义上支持并发的垃圾回收器,采用“标记-清除”的垃圾回收算法,目标:获得最短的停顿时间

    1)初始标记:第一次stop the world,标记GC roots直接相关的对象

    2)并发标记:基于初始标记的对象,标记可达对象

    3)重新标记:第二次stop the world,标记并发标记过程中产生变动的对象。该过程时间短于并发标记过程,但是长于初始标记

    4)并发清除:对不可达对象进行清除。  

 

     特点:并发收集,低停顿。   

               但是1)对CPU敏感

                      2)因为采用标记清除算法,容易产生内存碎片(CMS收集器提供了一个-XX:UseCMSCompactAtFullCollection开关参数,用于在Full GC之后增                                              加一个碎片整理过程,还可通过-XX:CMSFullGCBeforeCompaction参数设置执行多少次不压缩的Full GC之后,跟着来一次碎片整理过程)

4、G1垃圾回收器:以极⾼概率满⾜ GC 停顿时间要求的同时,还具备⾼吞吐量性能特征。采用“标记-整理”的垃圾回收算法

    把堆分为2048个大小相等的空间,每个空间大小可设置1~32M,每个region对应存放的eden、survivor以及old年代对象,此外还有Humongous大对象存放区域

    1)初始标记:第一次stop the world,标记GC roots直接相关的对象

    2)并发标记:基于初始标记的对象,标记可达对象

    3)重新标记:第二次stop the world,标记并发标记过程中产生变动的对象。该过程时间短于并发标记过程,但是长于初始标记

    4)筛选回收:首先对各个region回收的价值以及成本进行排序,根据用户设置的停顿时间回收一部分region

     https://blog.csdn.net/a745233700/article/details/121724998

 5、ZGC: https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html

 

posted @ 2022-04-14 10:47  韩哈哈哈  阅读(17)  评论(0)    收藏  举报