CMS、G1、ZGC

CMS

在java中,可作为GC Roots的对象有:

1.虚拟机栈(栈帧中的本地变量表)中引用的对象;

2.类静态属性引用的对象;

3.常量引用的对象;

4.本地方法栈中JNI(即一般说的Native方法)中引用的对象

回收线程数是(CPU数量+3)/4,

Java5开始使用的一款垃圾回收器,它是一个老年代垃圾回收器,可以和Serial收集器,Parallel New收集器配合使用。

cms它是一款专注于减少停顿时间的一款垃圾回收期

它有四个阶段:

  • 初始标记(标记GcRoots直接相连的对象)
  • 并发标记
  • 重新标记(新生代晋升到老年代的对象,直接分配到老年代的对象,引用变更)
  • 垃圾清理
    并发标记还有垃圾清理的时候,用户线程可以执行,不需要停顿
    CPU敏感、CPU敏感、CPU敏感
    浮动垃圾
    空间碎片,空间碎片多了,给大对象的分配带来麻烦

G1

Java7引入

特点:

1.并行与并发

G1 能充分利用多CPU、多核环境下的硬件优势,使用多个垃圾收集线程同时进行垃圾回收工作,减少垃圾回收的停顿时间

2.分 Region 的内存布局

G1 将堆内存分为多个大小相等的独立区域 Region,每个 Region 都可以扮演Eden、Survivor、Old 区的角色,这样可以不像其他垃圾回收器那样整个代进行回收,它是对Region进行回收

3.可预测的停顿时间

G1 可以建立可预测的停顿时间模型,用户可以指定一个期望的停顿时间,G1 会根据这个目标来调整垃圾回收的策略,尽量保证每次垃圾回收的时间不超过设定的停顿时间

工作过程

1.初始标记(Initial Mark)

  • "首先会进行一个短暂的初始标记阶段,这个阶段会标记从 GC Roots 直接可达的对象,这个过程是 STW(Stop The World)的,但由于只需要标记从 GC Roots 直接可达的对象,所以速度很快。"
    2.并发标记(Concurrent Marking)
  • "接着进入并发标记阶段,这个阶段可以与应用程序线程同时运行。在这个阶段,G1 会从初始标记的对象出发,遍历对象图,标记所有可达的对象。这个过程中应用程序可以继续执行,不会被完全暂停。"
    3.最终标记(Final Mark)
  • "在并发标记结束后,需要进行一个最终标记阶段,这个阶段也是 STW 的。在这个阶段中,G1 会处理在并发标记阶段中可能被修改的对象的标记,确保标记的准确性。"
    4.筛选回收(Live Data Counting and Evacuation)
  • "最后是筛选回收阶段,这个阶段会根据各个 Region 的回收价值和成本进行排序,选择回收价值最大的一些 Region 进行回收。在这个阶段中,G1 会把存活的对象复制到新的 Region...
    G1三种垃圾回收策略的概念与触发条件
    三种方式分别是什么含义
  • 新生代回收(YGC): 只回收新生代区域,代价低/频率高。
  • 混合回收(MixGC): 回收全部新生代+部分老年代,频率一般。
  • 完全回收(FullGC): 全部堆空间,代价高/频率低,系统离崩溃不远了。
相关推荐
典典分享指南17 分钟前
用指纹算法给文章去重:mid_signature 实战
jvm·maven·intellij-idea·jetty
Java成神之路-24 分钟前
深入理解三大高频队列:ArrayDeque、LinkedList、PriorityQueue 方法、特性与场景选择
java
马可家的菠萝28 分钟前
Vue3 + Canvas 手绘笔记工程化实践:别把画布只当成一张 PNG
前端·vue.js·算法
watersink30 分钟前
机器学习极大似然估计与EM算法
人工智能·算法·机器学习
roman_日积跬步-终至千里33 分钟前
【资源控制】自助查询的智能路由
java·大数据·数据库
叠层归一研究院35 分钟前
如何用程序搭建一个 AGI 种子系统(一):从向量种子到无限生长引擎
人工智能·python·算法·机器学习·agi
科学实验家39 分钟前
并 查集
算法
步行cgn1 小时前
MyBatis Error evaluating expression ‘ids‘. Return value (3) was not iterable 错误详
java·后端
AI服务老曹1 小时前
视觉算法模型管理性能优化指南:多版本平滑升级、灰度与快速回滚实战
算法·性能优化
l1258651 小时前
# RAG重排序实战:硅基流动bge-reranker-v2-m3在线API vs 本地CrossEncoder,一篇讲透两种方案
数据库·人工智能·python·深度学习·算法·机器学习·langchain