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
浙公网安备 33010602011771号