牛逼了!JDK 16 ZGC 实现最大暂停时间不超过1ms

JAVA年开发 从字节码到ZGC,探索Java的底层演进心机制 自2006年Java 6发布至2021年Java 17(LTS),Java在性能、并发、内存管理等领域经历了颠覆性变革。作者:王文峰,参加过 优快云 2020年度博客之星,《Java王大师王天师》作者:王文峰,参加过 优快云 2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题。公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题。转载说明:务必注明来源(注明:作者:王文峰哦)转载说明:务必注明来源(注明:作者:王文峰哦) 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 

准备不熬夜了

定个小目标

每天 1 点睡觉

????

ZGC

JDK 16已经发布,和往常一样,每个新发行版都具有许多新功能,增强功能和错误修复,其中 ZGC获得了46个增强功能和25个错误修复,最厉害的是把GC最大暂停时间控制在了1ms之内,牛逼!

图片

记得JDK11中第一次发布了ZGC,把GC最大展厅时间控制在了10ms之内,当时觉得不可思议,现在居然可以控制在1ms了。

图片

通过压测数据可以看出,相对比JDK15的ZGC,在16版本中,平均GC暂停时间约为0.05毫秒(50微秒),最大暂停时间约为0.5毫秒(500微秒),具有O(1) 暂停时间。换句话说,它们以几乎恒定的时间执行,并且不会随堆,活动集或根集大小(或与此相关的任何其他内容)的增加而增加。

那么,是怎么做到的?

在JDK 16之前,ZGC的暂停时间仍然根据gc root的大小进行缩放。更准确地说,仍然需要在“stop the world”阶段扫描线程堆栈,这意味着,如果Java应用具有大量线程,则暂停时间将增加,如果这些线程具有深层调用堆栈,则暂停时间将增加更多。

从JDK 16开始,线程堆栈的扫描和Java服务线程并发进行 ,这个过程不需要“stop the world”,具体怎么实现?想象一下,为了实现在Java线程运行期间,还能够被扫描到堆栈信息,这里就需要做些魔法,这个黑科技就是“Stack Watermark Barrier”。

Stack Watermark Barrier

简短来说,这是一种机制,可以防止Java线程在返回栈帧时而无需先检查这样做是否安全,而是直接放到 safe-point 安全点检查中,也可以看成是栈帧的load barrier,保证Java线程在返回栈帧之前采取某种操作,把栈帧带到一个安全状态(好让GC线程来扫描)。每个Java线程有一个或多个 stack watermarks,这些stack watermarks会告诉barrier,在堆栈中还可以安全执行多少次(无需任何特殊操作),如果执行的栈位置超过watermark,就会执行到一条slow path,并把一个或者多个栈帧放到安全状态。关键是,现在的实现不需要等所有Java线程都进入到safepoint安全点,再统一扫描了,在耗时方面也大大减少了。

过程有点复杂,文字看起来干巴巴,下次有图文了,再佛系分享,着急的同学可以先看下面这个JEP

JEP 376:ZGC:并行线程堆栈处理 http://openjdk.java.net/jeps/376



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
Open3D (C++) 使用点云创建数字高程模型DEM 阅读详情

相关推荐

TDISP(TEE Device Interface Security Protocol)软件操作流程

/ 1. SPDM会话相关定义(🔶1-37、🔶1-187)// SPDM会话ID// AES-256-GCM加密密钥(TDISP要求)// 初始向量// 会话是否激活// 2. IDE流配置(🔶1-52、🔶1-625)// IDE流ID// 4个子流的AES密钥(覆盖所有子流类型)// 密钥是否已配置// 3. TDI状态与配置(🔶1-207、🔶1-210)TDI_CONFIG_UNLOCKED = 0, // 初始配置态。

inquisiter 1432

干掉cms,zgc才是未来

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 8:55 更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2020 超神之路,很肝~中...

芋艿V 129

瑞芯微Android固件修改实战:从解包到root提权完整流程(附工具包)

本文详细解析了瑞芯微Android固件深度定制全流程,涵盖从固件包解包、系统镜像修改到植入root提权与分区调整的实战步骤。通过工具链操作与原理剖析,指导开发者安全实现系统精简、权限获取及存储扩容,最终完成固件重新打包与刷机验证,适用于追求设备完全控制权的技术爱好者。

ujm56789012的博客 699

极致低延迟收集器ZGC探索——亚毫秒级,常数级暂停O(1)原理

ZGC收集器(Z Garbage Collector)是由Oracle公司为HotSpot JDK研发的,最新一代垃圾收集器。

一个自我学习的记录之处 1185

STM32H743 ADC校准失败排查:HAL_ADCEx_Calibration_Start()的正确调用时机

本文深入剖析了STM32H743 ADC校准失败的核心原因,即错误地在ADC使能状态下调用HAL_ADCEx_Calibration_Start()函数,导致读数漂移。文章详细解释了校准必须在ADC禁用状态下进行的硬件原理,列举了典型错误场景,并提供了上电初始化与周期性重校准的正确代码实践,帮助开发者彻底解决ADC精度问题。

ik678901的博客 1177

增量式PID的P和I怎么理解(一)

增量式PID的P、I理解之推翻片 据我所知的资料里关于PID三个参数的理解是这样的:(我这里只说P和I,先不说D) P的作用:比例P可以加快系统调节速度,P过小调节时间变长,响应性不够,P越大响应性越高超调也越严重,过大的P会使系统振荡。 I的作用:消除静差,提高控制精度,I越大越滞后,过大会使系统振荡。 ...

fangchenglia的博客 1万+

ZGC原理整理

ZGC原理整理

luck_lsj的博客 1847

Android11 关于三方应用获取su权限

SELinux,全称Security-Enhanced Linux,是一种基于Linux内核的安全机制。它通过强制访问控制(MAC)来增强Linux系统的安全性,如果不禁用SELinux,完成下面的修改可能会导致设备进入Recovery界面!adb shell getenforce 为Permissive(宽容模式),查看报错日志,发现是客户apk想使用su命令提权,但是没有权限!对于保护系统资源和防止未经授权访问非常有帮助!系统这边做修改,让su权限下放到三方应用.客户的apk运行报错。

sinat_37429535的博客 1901

低延迟垃圾回收器ZGC

对于低延迟和高可用的Java服务,GC停顿一直是它们的痛点。ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,可用于大内存低延迟服务的内存管理和回收。

WLFIGHTER的专栏 1284

在 SAP S/4HANA 的 BP 事务里做保存前校验:BDT 事件、BUPA_FURTHER_CHECKS 与 CVI 扩展 BAdI 一次讲透

SAP BP事务保存前校验机制解析 摘要:本文系统梳理了SAP BP事务保存前的校验机制,揭示了三种关键校验点的差异与适用场景: BDT框架DCHCK事件:最靠近UI层,适合屏幕字段级校验,但API调用时可能失效 Classic BAdI BUPA_FURTHER_CHECKS:全局拦截点,可阻断整个BP保存,适合核心业务规则 CVI扩展校验:仅管控供应商/客户段落,需注意可能产生"BP已保存但段落未保存"的情况 文章通过真实案例(如黑名单校验、付款冻结等)展示了各校验点的最佳实践,并特

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 310

云端办公文件存储与访问全攻略:选型、预算、实操一本通

随着远程办公、多设备协作成为常态,“文件云端存储、随时调用” 已成为提升办公效率的核心需求。本文从用户实际场景出发,系统拆解云端存储的选型逻辑、全场景费用预算,重点解答 “文件能否直接在线打开” 的核心疑问,并提供实操技巧与安全保障方案,覆盖个人、小团队(含兼职)、企业全维度需求,帮助不同规模用户快速搭建高效、低成本的云端办公体系。

hy行者勇哥的博客 1240

JVM — JDK11垃圾回收器 ZGC

ZGC(The Z Garbage Collector)是 JDK 11 中推出的一款低延迟垃圾回收器,为实现以下几个目标而诞生的垃圾回收器,停顿时间不超过 10ms,停顿时间不会因堆变大而变长,支持 8MB~4TB 级别的堆(未来支持 16TB)ZGC 作为下一代垃圾回收器,性能非常优秀。ZGC 垃圾回收过程几乎全部是并发,实际 STW 停顿时间极短,不到 10ms。这得益于其采用的着色指针和读屏障技术。

qq_38658567的博客 3825

Python爬虫实战:链家/贝壳租房数据抓取与可视化分析平台

本文详细介绍了如何使用Python爬虫技术抓取链家/贝壳网站的租房信息,并构建一个完整的数据可视化分析平台。文章涵盖了从数据抓取、数据清洗、数据存储到数据可视化的全流程,使用最新的Python技术栈,包括AsyncIOPandasMongoDB和Pyecharts等库。本系统可作为毕业设计项目,提供了完整的代码实现和架构设计。关键词:Python爬虫、数据抓取、数据可视化、链家、贝壳、租房信息、毕业设计。

2201_76125261的博客 1207

JDK 16优化ZGC 控制stw时间不超过10毫秒

JDK 16已经发布,和往常一样,每个新发行版都具有许多新功能,增强功能和错误修复,其中 ZGC获得了46个增强功能和25个错误修复,最厉害的是把GC最大暂停时间控制在了1ms之内,牛逼! 记得JDK11中第一次发布了ZGC,把GC最大展厅时间控制在了10ms之内,当时觉得不可思议,现在居然可以控制在1ms了。 通过压测数据可以看出,相对比JDK15的ZGC,在16版本中,平均GC暂停时间约为0.05毫秒(50微秒),最大暂停时间约为0.5毫秒(500微秒),具有O(1) 暂停时间。换句话说,它

weixin_45132335的博客 602

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

最牛逼的垃圾回收期ZGC(1),简介

最牛逼的垃圾回收器ZGC

你还有好多未完成的梦,你有什么理由停下? 1022

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【ZGC性能革命指南】:20年JVM专家亲授,如何将Java应用GC停顿压至10ms内?

Java ZGC教程助你将GC停顿稳定压至10ms内,适用于高吞吐、低延迟场景。详解ZGC原理、JDK11+配置调优、并发标记与染色指针实践,显著提升Java应用响应稳定性。20年JVM专家经验凝练,值得收藏。

VarIsle的博客 256

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

你了解 Java 的 ZGC(Z Garbage Collector)吗?

ZGC 是 Java 垃圾回收的“革命性”突破,通过着色指针、读屏障、并发转移等创新,实现了大内存下的超低停顿,重新定义了垃圾回收的性能边界。虽对 CPU 资源有一定要求,但在低延迟、大内存场景下,是 G1、CMS 的理想替代方案,代表了 Java 垃圾回收器的未来发展方向(后续还演化出更极致的 Shenandoah 收集器 )。

weixin_43521001的博客 822

ZGC 垃圾回收器

ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 【1】停顿时间不超过10ms; 【2】停顿时间不会随着堆的大小,或者活跃对象的大小而增加,影响它的是 GCRoot对象; 【3】支持 8MB~4TB级别的堆(未来支持16TB); 从设计目标来看,ZGC适用于大内存低延迟服务的内存管理和回收。本文主要介绍 ZGC在低延时场景中的应用和卓越表现,文章内容主要分为四部分: 【1】GC之痛:介绍实际业务中遇到的 GC痛点,并分析 CMS收集器和

程序猿进阶 2242

ZGC、G1与Parallel Scavenge吞吐量及停顿时间对比

而在ZGC的强项停顿时间测试上,它就毫不留情地与Parallel Scavenge、Gl拉开了两个数量级的差距。不论是平均停顿,还是95%停顿、99%停顿、99.9%停顿,抑或是最大停顿时间,ZGC均能毫不费劲地控制在十毫秒之内,以至于把它和另外两款停顿数百近千毫秒的收集器放到一起对比。,因为Parallel Scavenge基于标记-复制算法实现,侧重于吞吐量。不设置期望停顿时间(Critical Throughput)时,(比如10毫秒到100毫秒),设置了期望停顿时间时。

日常技术分享 1842

ZGC-一款为开拓JAVA新疆土的垃圾回收器

ZGC(The Z Garbage Collector)是JDK 11中推出的一款追求极致低延迟的垃圾收集器,目的是为了给Java开疆拓土,挑战以前java系统无法承担的重任

weixin_38277138的博客 529

JDK 16 对 ZGC 的增强

JDK 16 已经发布。与往常一样,新版本 JDK 会带来一系列新功能、功能增强以及 bug 修复。在这个版本中 ZGC 有 46 个功能增强以及 25 个 bug 修复。这里我会介绍一些...

weixin_45583158的博客 1万+

【ZGC】G1停顿40ms很不错了?NO ZGC 10ms内! 厉害

1 系统环境 os centos 8.1, jvm jdk hotspot 11, kernel (yum info kernel -q) Version : 4.18.0 2 最终配置流程: A:openjdk 11 install sudo yum install java-11-openjdk-devel sudo alternatives --config java B: 设置环境变量 cat > /etc/profile.d/java...

qfzhangwei的专栏 940

深入理解JVM - ZGC垃圾收集器

ZGC是Oracle研发的一款以低延迟为目标的垃圾收集器,采用动态Region内存布局(小型2MB、中型32MB、大型可变),支持最大4TB内存回收且停顿时间不超过10ms。其核心技术包括染色指针(利用指针高4位存储标记信息)、内存多重映射(多虚拟地址映射同一物理内存)和读屏障(实现对象访问自愈)。ZGC运作过程分为并发标记、预备重分配、并发重分配和重映射四个阶段,具有出色的低延迟性能(停顿时间远低于其他收集器)和接近Parallel Scavenge的高吞吐量。主要缺点是存在浮动垃圾问题,因全堆扫描导致新

xiaolyuh的专栏 6518

ZGC的运行过程以及读屏障

ZGC运行过程以及ZGC的读屏障

程序员路同学 1437

软件测试性能测量参数,性能测试时需关注应用中间件27个指标和参数

本文介绍在性能测试的时候,需要关注应用中间件的哪些参数或指标。任何涉及到性能的事情,都离不开监控,本文还将介绍应用中间件WAS的监控方法。应用中间件需关注的指标介绍在性能测试的时候,需要关注应用中间件的哪些参数或指标。本文以WAS为例,但实际上,概念都是一样的。Web应用程序1 概念应用服务器提供Web服务(接收请求,返回应答),关注其服务的能力,包括响应时间、错误的比例、吞吐量等等。2 关注指标...

weixin_42318030的博客 1299

基于中间件访问频率限制 每分钟时间间隔最多访问3次

同一个IP 1分钟时间间隔只能访问三次 1. 拿到用户请求的IP 2. 当前请求的时间 3. 记录访问的历史 VISIT_RECORD ={ 'ip':[] } class Throttle(MiddlewareMixin): def process_request(self,request): # print(request.META...

weixin_30363817的博客 428
上一篇: 领域驱动设计(DDD):分层架构
下一篇: 你以为在做的是微服务?不!你只是做了个比单体还糟糕的分布式单体!
公众号-芋道源码
博客等级 码龄10年 1631粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值