首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
SQL-Server
›
JVM 性能优化与调优-ZGC(Z Garbage Collector) ...
返回列表
发新帖
JVM 性能优化与调优-ZGC(Z Garbage Collector)
[复制链接]
发表于 2026-1-24 03:49:55
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
JVM
性能
优化与调优——ZGC(Z Garbage Collector)
在 JVM
性能
优化中,垃圾网络器的选择和调优至关紧张。垃圾网络器(Garbage Collector, GC)负责接纳不再利用的对象所占用的内存,以便应用步调可以高效利用有限的内存资源。Java 通过差异的垃圾网络器来顺应差异的应用场景,而 ZGC(Z Garbage Collector) 是为处置惩罚超大堆内存应用而筹划的一种低延长垃圾网络器。
1. 配景:Java 垃圾网络器的发展
Java 捏造机(JVM)在其生命周期中履历了多个垃圾网络器的演进,以应对差异应用场景的
性能
需求。常见的垃圾网络器包罗:
Serial GC
:串行垃圾网络器,实用于小型应用,单线程工作。
Parallel GC
:并行垃圾网络器,实用于吞吐量优先的应用,利用多线程加速垃圾网络。
CMS(Concurrent Mark-Sweep)
:并发标记扫除垃圾网络器,提供了并发的垃圾网络过程以低落停顿时间。
G1 GC
:Garbage First 网络器,实用于大堆内存应用,分身低停顿和吞吐量。
只管 G1 GC 已经显着提升了大内存应用的性能,但对于一些延长敏感和超大堆内存的应用场景,停顿时间仍然是一个须要优化的点。因此,JDK 11 引入了 ZGC,它是专为大堆内存且对低停顿要求苛刻的应用而筹划的垃圾网络器。
2. 什么是 ZGC?
ZGC(Z Garbage Collector)
是一种低延长垃圾网络器,筹划目标是在垃圾网络时将 GC 停顿时间控制在 10 毫秒以内,纵然应用运行在 TB 级别的堆内存中。ZGC 是一个完全并发的垃圾网络器,除了少少量的短暂 “stop-the-world” 利用之外,它险些完全在配景并发举行。
ZGC 的重要特点:
低延长
:纵然在非常大的堆(数百 GB 或 TB 级)中,ZGC 也能保持极低的停顿时间。
可扩展性
:ZGC 可以或许支持从数 MB 到数 TB 的堆内存,实用于超大规模的应用。
并发标记和压缩
:ZGC 不光标记对象是并发的,连压缩过程也是并发举行的。这与传统的 GC 差异,传统 GC 在压缩内存时通常须要停息应用步调。
3. ZGC 的工作原理
ZGC 的焦颔首脑是利用指针着色(colored pointers)技能来管理和跟踪堆内存中的对象,并实现险些完全并发的垃圾网络过程。
3.1 指针着色(Colored Pointers)
ZGC 利用了一个名为指针着色的技能,它将一些控制信息嵌入到内存指针中,而不是传统的通过外部表或标记位来管理对象。每个指针有 64 位,ZGC 利用此中的部分位来体现对象的状态,比方是否正在标记或是否被转移到新的位置。
这种方式的上风在于可以快速地查抄和更新对象的状态,镌汰额外的内存访问开销。
3.2 三阶段垃圾网络过程
ZGC 的垃圾网络过程重要分为三大阶段,且全部阶段险些都在并发举行:
并发标记
:辨认和标记堆中的活动对象。这一阶段与应用步调并发实验,ZGC 不会制止应用的线程。
并发重定位
:将活动对象从旧地区迁徙到新地区,以镌汰堆内存碎片。ZGC 在重定位过程中也不会制止应用步调,而是利用指针着色跟踪对象的移动。
并发整理
:整理不再利用的对象并接纳内存空间。与前两个阶段一样,这也是并发实验的。
3.3 并发垃圾网络与低停顿
ZGC 之以是可以或许保持低延长,重要是由于绝大部分垃圾网络工作是与应用步调并发实验的。ZGC 的 “stop-the-world” 利用仅限于非常短暂的处置惩罚时间,通常在 10 毫秒以内,这与其他垃圾网络器相比是显着的上风。
4. ZGC 的设置
要在 JVM 中启用 ZGC,可以通过以下 JVM 参数:
-XX:+UseZGC
复制
代码
在 Java 11 及以后的
版本
中,ZGC 是作为实验性特性引入的,因此在启用 ZGC 时还须要指定启用实验性
功能
的标记:
-XX:+UnlockExperimentalVMOptions -XX:+UseZGC
复制
代码
在 Java 15 及以后,ZGC 不再是实验性
功能
,因此不须要 -XX:+UnlockExperimentalVMOptions 选项。
4.1 其他常用 ZGC 参数
设置堆巨细
:根据应用需求设置最小和最大堆内存巨细:
-Xms10g -Xmx10g
复制
代码
这是为 ZGC 设定堆巨细的标准 JVM 参数。
最大停顿时间目标
:可以通过 -XX:MaxGCPauseMillis 参数设置 GC 停顿时间的目标,只管 ZGC 默认已优化为低停顿时间,但可以调解目标值:
-XX:MaxGCPauseMillis=5
复制代码
监控
GC
日志
:启用 GC
日志
可以资助
监控
和调优 ZGC 的体现:
-Xlog:gc*
复制代码
5. ZGC 的实用场景
ZGC 筹划的初志是为处置惩罚具有大堆内存和延长敏感的应用。以了局景是 ZGC 的范例应用场景:
5.1 大内存应用
ZGC 可以或许处置惩罚超大规模的堆内存(可达 TB 级),因此它特殊得当内存麋集型应用,比方须要
存储
大量数据的
数据库
、缓存体系和大数据处置惩罚引擎。
5.2 延长敏感应用
ZGC 的低停顿特性使得它非常得当延长敏感型的应用步调,如金融买卖业务体系、实时数据处置惩罚应用等。这些体系通常对每次利用的相应时间有严格要求,纵然在大内存情况下,也不盼望由于垃圾网络而出现长时间的停息。
5.3 高并发应用
ZGC 的并发特性可以或许很好地应对高并发情况。在处置惩罚大量并发哀求的体系中(如
微服务
架构、Web 服务等),ZGC 可以或许包管稳固的相应时间,不会由于垃圾网络造成大规模停顿。
6. ZGC 性能调优
固然 ZGC 已经优化为低延长和高可扩展性,但根据差异的应用场景,开辟者仍可以通过调优提升 ZGC 的性能。
6.1 调解堆内存巨细
ZGC 支持处置惩罚大堆内存,但过大的堆内存也大概导致垃圾网络压力增长。因此,公道设置堆巨细是调优的关键之一。可以通太过析应用步调的实际内存利用情况,来设定得当的堆巨细。
6.2 调解停顿时间目标
-XX:MaxGCPauseMillis 允许开辟者根据应用的需求设定停顿时间目标。默认情况下,ZGC 已经将停顿时间控制在 10 毫秒以内,但根据具体应用的延长要求,可以进一步调解这一参数。
6.3
监控
与分析 GC
日志
通过启用 GC 日志,开辟者可以实时监控垃圾网络的体现。日志中的信息包罗每次 GC 的时间、内存分配情况、GC 停顿时间等。通太过析这些日志,可以确定垃圾网络的瓶颈,进而做出相应的优化调解。
7. ZGC 的优缺点
优点:
低停顿时间
:ZGC 的最大停顿时间通常控制在 10 毫秒以内,得当延长敏感的应用场景。
处置惩罚大堆内存
:ZGC 可以或许轻松处置惩罚 TB 级别的堆内存,极大提升了大内存应用的性能。
并发垃圾网络
:ZGC 的大部分垃圾网络过程是并发举行的,不会壅闭应用步调的实验。
缺点:
**吞吐量
较低**:与 G1 GC 等垃圾网络器相比,ZGC 在某些场景下大概会捐躯肯定的吞吐量,调换更低的延长。
2.
实用性有限
:固然 ZGC 支持大部分 Java 应用,但对于一些小内存、并发需求不高的应用,ZGC 大概并不是最优选择。
8. 结论
ZGC 是 JVM 的一项庞大改进,特殊实用于那些须要处置惩罚大内存并对延长要求严格的应用场景。它通过指针着色、并发垃圾网络和重定位技能,实现了低停顿、可扩展的垃圾网络机制,使得应用步调可以或许在大规模并发场景下保持稳固的性能。
在实践中,开辟者可以通过公道的 JVM 设置、调优和监控,充实发挥 ZGC 的上风,优化应用的性能。将来,随着 ZGC 的进一步发展和优化,它将成为处置惩罚高性能应用的一大利器,特殊是在须要处置惩罚大内存、低延长和高并发的今世应用中。
回复
使用道具
举报
返回列表
浏览过的版块
前端开发
Oracle
主机安全
运维.售后
DevOps与敏捷开发
数据仓库与分析
容器及微服务
SAAS
写过一篇
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表