当前位置: 首页 > news >正文

G1垃圾回收器

垃圾回收器发展史

G1最大的特征

将大空间分成若干小区域能实现一些更复杂、更精细的功能

G1与传统模型对比

G1由JDK7引入,Java8基本成熟,JDK9称为默认垃圾回收器,JDK14删除CMS,G1登基

划分成小区域的好处

  • 垃圾回收线程和工作线程能够并行工作,避免“STW
  • 不同区域可同时回收,并发性更高,更适合多核服务器
  • 可以先回收一部分区域,回收更快
  • 可以建立停顿预测模型,用户可以设定垃圾回收最长时间

G1对象管理

年轻代垃圾回收

Region划分原理

大对象分区(H区)

新生代与老年代占比

新生代大约占整个堆的1/3,老年代占比大约剩余的2/3

也有说新生代占堆比例是动态变化的最小5%,然后慢慢增加到60%

如何设置分区大小

-XX:G1HeapRegionSize=4M

此命令可以设置region区大小为4M,分区最大可以设置32M

G1三种垃圾回收策略的原理

  • 新生代回收原理
  • 混合回收原理
  • Ful回收原理
  • 大对象回收

新生代满了就会触发新生代回收,只回收新生代

前提新生代满了并且老年代占用达到阈值会触发混合回收,先执行新生代回收和再执行老年代回收

当混合回收后对象仍无法分配会触发Full GC

几个容易混淆的概念

YGC新生代回收的基本过程

YGC的基本过程一

标记存活对象:从GCroots出发标记存活对象

GCroots有哪些?

YGC的基本过程二

复制存活对象到S区,该过程最耗时

YGC的基本过程三

释放垃圾集合,回收region;该工作反而比较快,类似硬盘格式化。

YGC的基本过程四

YGC的基本过程五

堆空间使用超过45%

YGC里并行执行的任务

YGC里串行执行的任务

G1垃圾收集器停顿预测模型

G1收集器突出表现出来的一点是通过一个停顿预测模型根据用户配置的停顿时间来选择Cset的大小,从而达到用户期待的应用程序暂停时间

通过-XX:MaxGCPauseMillis参数来设置,这一点有点类似于Parallel Scavenge收集器.关于停顿时间的设置并不是越短越好

设置的时间越短意味着每次收集的Cset越小,导致垃圾逐步积累变多,最终不得不退化成Serial GC;
停顿时间设置的过长,那么会导致每次都会产生长时间的停顿,影响了程序对外的响应时间

G1的衰减预测模型

垃圾回收的时间花到哪里了?

真正决定回收时间的就是转移对象所需要的时间甚至可以直接简化为回收时间=对象转移时间

混合回收和后面的FUII回收都是同时处理新生代和老年代区域

对象什么时候进入老年代

混合回收什么时候发生?

通过参数可调整触发时机

混合回收基本步骤

混合回收的并发标记为什么从YGC开始

YGC与MixedGC是什么关系

MixedGC的并发标记从哪里开始

哪些region会被回收

混合回收是否会真的要执行

http://www.xdnf.cn/news/1161199.html

相关文章:

  • 复习博客:JVM
  • LVS 集群技术基础
  • Valgrind Cachegrind 全解析:用缓存效率,换系统流畅!
  • 【初识数据结构】CS61B中的最小生成树问题
  • 本地部署Nacos开源服务平台,并简单操作实现外部访问,Windows 版本
  • ZooKeeper学习专栏(四):单机模式部署与基础操作详解
  • ruoyi-flowable-plus Excel 导入数据 Demo
  • 【qml-3】qml与c++交互第二次尝试(类型方式)
  • (9)机器学习小白入门 YOLOv:YOLOv8-cls 技术解析与代码实现
  • uni-app 开发小程序项目中实现前端图片压缩,实现方式
  • Java基础面试题
  • Laravel 后台登录 403 Forbidden 错误深度解决方案-优雅草卓伊凡|泡泡龙
  • 芯谷科技--固定电压基准双运算放大器D4310
  • kafka 日志索引 AbstractIndex
  • 智慧场景:定制开发开源AI智能名片S2B2C商城小程序赋能零售新体验
  • Web开发:ABP框架12——中间件Middleware的创建和使用
  • delphi disqlite3 操作sqlite
  • 通信刚需小能手,devicenet转PROFINET网关兼容物流分拣自动化
  • 【Elasticsearch】IndexModule
  • 【Elasticsearch】BM25的discount_overlaps参数
  • SVM(Support Vector Machine)从入门到精通
  • [Python] -项目实战10- 用 Python 自动化批量重命名文件
  • odoo-059 xml中字段上写 domain 和 filter_domain 什么区别
  • 第三章自定义检视面板_创建自定义编辑器类_如何自定义预览窗口(本章进度5/9)
  • Ubuntu 22.04 安装 Jdk 8和 Tomcat (安装包形式)
  • 基于python django的BOSS直聘网站计算机岗位数据分析与可视化系统,包括薪酬预测及岗位推荐,推荐算法为融合算法
  • Sklearn 机器学习 IRIS数据 理解分类报告
  • Nginx IP授权页面实现步骤
  • 分布在内侧内嗅皮层(MEC)的带状细胞对NLP中的深层语义分析有什么积极的影响和启示
  • Zetane:让深度学习不再抽象,一键3D可视化