网易首页 > 网易号 > 正文 申请入驻

升级 JDK17 一个不可拒绝的理由!

0
分享至

Java精选面试题(微信小程序):5000+道面试题和选择题,真实面经简历模版,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计、大厂真题等,在线随时刷题!

1. 背景 TLDR

垃圾回收器的暂停问题对实时响应要求较高的服务来说,一直是个痛点, CMS和G1等主流垃圾回收器的数十毫秒乃至上百毫秒的暂停时间相当致命。此外,调优门槛也相对较高,需要对垃圾回收器的内部机制有一定的了解,才能够进行有效的调优。随着ZGC的出现, 使得这一痛点彻底解决, ZGC 最初在 JDK 11 中作为实验性功能引入,并在 JDK 15 中宣布为生产就绪, 由于JDK17才是比较正式提供给大众实用的LTS支持版本,而且一部分公司已经在使用,所以本文力推JDK17。

ZGC 作为一款低延迟垃圾收集器,旨在满足以下目标:

  • 8MB到16TB的堆大小支持

  • 10ms最大GC暂时

  • 最糟糕的情况下吞吐量会降低15%(实测,如果参数配置的问题可能更糟, 官方这个稍微吹牛了点, 说实话就是用CPU换GC时间,也没有那么高大上)

1.1. 升级JDK17的不可拒绝的理由

低延迟的业务需求,毫秒级耗时的GC

据美团的开发说:

在Zeus服务不同集群中,ZGC在低延迟(TP999 < 200ms)场景中收益较大:

  • TP999 :下降12~142ms,下降幅度18%~74%。

  • TP99 :下降5~28ms,下降幅度10%~47%。

可以忽略的升级JDK17的理由

  • 新版的SpringBoot 官方最低支持 JDK17,想使用新Spring版本,就得升级

  • JIT 编译器的增强

  • JDK 17 中的新功能,例如 Sealed 类、Pattern Matching、Records 等

  • 升级到 JDK 17 可以获得更好的安全性,包括修复的漏洞和强化的安全机制

1.2. 适用场景

  • 网关服务

  • Web API

暂不推荐场景:定时任务、批量任务、高CPU密集型应用

2. 升级前后对比

话不多说,先看效果

环境:

CPU: 4c Mem: 6GB

G1参数:

    -Xmx3500m -Xms3500m -XX:+UseG1GC -XX:MaxGCPauseMillis=100     -XX:G1ReservePercent=10 -XX:ConcGCThreads=2 -XX:ParallelGCThreads=5     -XX:G1HeapRegionSize=16m -XX:MaxTenuringThreshold=14     -XX:SurvivorRatio=8

ZGC参数:

--add-opens=java.base/java.lang=ALL-UNNAMED -Xms3500m -Xmx3500m -XX:ReservedCodeCacheSize=256m -XX:InitialCodeCacheSize=256m -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:ConcGCThreads=1 -XX:ParallelGCThreads=3 -XX:ZCollectionInterval=60 -XX:ZAllocationSpikeTolerance=4 -XX:+UnlockDiagnosticVMOptions -XX:-ZProactive  -Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/opt/gc-%t.log:time,tid,tags:filecount=5,filesize=50m

上述两个参数,均已经在生产环境实验过, 生产环境的机器是单机拥有1500业务tps的机器

2.1. GC耗时对比

从上图可见, GC耗时是有着质的区别的,这个区别是你用CMS、Parallel GC、 G1 等呕心沥血也调校不出来的

这么短的GC, 可以保证,应用因为JVM层面的卡顿都保持在1ms 以内, 这也是为啥说这点才是不能拒绝的理由

2.2. CPU使用对比

从CPU使用上看, JDK17 相同的代码, 比JDK8要高出10 ~ 20%

3. 升级方法

3.1. JDK选择或安装

使用JDK17前必须要安装JDK17, 对于不同的Linux发行版或者操作系统安装方法各不相同, 下面给出了一些样例, 仅供参考。

# ubuntu 安装jdk17 sudo apt install openjdk-17-jdk # docker 基础镜像 docker pull openjdk:17-slim docker pull openjdk:17-jdk-oraclelinux7 Dockerfile 复制代码FROM openjdk:17-slim

3.2. JVM 参数调整

有了JDK17后,你已经具备了让你的Java程序运行在JDK17上的基本条件了,下一步便是配置Jvm 参数如下(有需要的话,可以自行把换行整理下):

    --add-opens=java.base/java.lang=ALL-UNNAMED \     -Xms1500m -Xmx1500m \     -XX:ReservedCodeCacheSize=256m \     -XX:InitialCodeCacheSize=256m \      -XX:+UnlockExperimentalVMOptions \     -XX:+UseZGC \     -XX:ConcGCThreads=1 -XX:ParallelGCThreads=2 \     -XX:ZCollectionInterval=30 -XX:ZAllocationSpikeTolerance=5 \     -XX:+UnlockDiagnosticVMOptions -XX:-ZProactive \     -Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/opt/gc-%t.log:time,tid,tags:filecount=5,filesize=50m \     -XX:+HeapDumpOnOutOfMemoryError \     -XX:HeapDumpPath=/opt/errorDump.hprof

4. 参数释义

参数名

参数含义

--add-opens

JDK9模块化后,导致javabase下面的一些基础包访问权限受阻, 需要开放访问, 默认 设置java.base/java.lang=ALL-UNNAMED即可

-Xms1500m -Xmx1500m

堆内存设置,非常常见,不解释

-XX:ReservedCodeCacheSize=256m

JIT编译的代码都放在CodeCache中,一般服务64m或128m就已经足够

-XX:InitialCodeCacheSize=256m

初始code cache大小

-XX:+UnlockExperimentalVMOptions

开启实验性质的JVM选项,打开可以解锁更多的JVM设置的能力

-XX:+UseZGC

使用ZGC

-XX:ConcGCThreads=1

并发回收垃圾的线程。默认是总核数的12.5%,8核CPU默认是1。调大后GC变快,但会多占用程序运行时的CPU资源

-XX:ParallelGCThreads=2

STW阶段使用线程数,默认是总核数的60%

-XX:ZCollectionInterval=30

GC周期之间的最大间隔(单位秒)

-XX:ZAllocationSpikeTolerance=5

增大修正系数-XX:ZAllocationSpikeTolerance,更早触发GC。ZGC采用正态分布模型预测内存分配速率,模型修正系数ZAllocationSpikeTolerance默认值为2

-XX:+UnlockDiagnosticVMOptions -XX:-ZProactive

是否启用主动回收,默认开启,这里的配置表示关闭

-Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/opt/gc-%t.log:time,tid,tags:filecount=5,filesize=50m

GC日志设置

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/errorDump.hprof

当发生OOM的时候HEAP DUMP 及其配置

欢迎大家加入技术交流群,全面提升自身技术能力。

来源:https://juejin.cn/post/7173271507047546893

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

文章有帮助的话,点在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
欣旺达认怂赔6亿,极氪召回,最尴尬的却是理想汽车?

欣旺达认怂赔6亿,极氪召回,最尴尬的却是理想汽车?

阿芒娱乐说
2026-02-10 18:13:57
郭碧婷一家新加坡过年,5岁女儿穿汉服正面像洋娃娃,向佐玩手机

郭碧婷一家新加坡过年,5岁女儿穿汉服正面像洋娃娃,向佐玩手机

古希腊掌管月桂的神
2026-02-12 22:57:11
四天过去,中国反制准时执行,欧盟内部陷入混乱,局势变成6对21

四天过去,中国反制准时执行,欧盟内部陷入混乱,局势变成6对21

钦点历史
2026-02-13 13:00:49
原来有人天生就是吃销售这碗饭的!网友:上班三天就开了千万大单

原来有人天生就是吃销售这碗饭的!网友:上班三天就开了千万大单

另子维爱读史
2026-02-12 19:09:59
NBA最新排名出炉!卫冕冠军大爆冷,湖人重回第五,联盟第一易主

NBA最新排名出炉!卫冕冠军大爆冷,湖人重回第五,联盟第一易主

鱼崖大话篮球
2026-02-13 13:51:09
青岛市纪委监委通报,1人被查,1人被开除党籍和公职

青岛市纪委监委通报,1人被查,1人被开除党籍和公职

齐鲁壹点
2026-02-13 11:57:17
战火一旦爆发,中国将会到达无人知晓的地步

战火一旦爆发,中国将会到达无人知晓的地步

执笔写思念
2026-02-11 21:03:02
薛剑再次表态!连收两大“好消息”,高市打算从中国南边开始反击

薛剑再次表态!连收两大“好消息”,高市打算从中国南边开始反击

娱乐小可爱蛙
2026-02-13 13:01:50
2026春运大巴彻底翻红!不是高铁不行,是打工人的刚需太真实

2026春运大巴彻底翻红!不是高铁不行,是打工人的刚需太真实

复转这些年
2026-02-03 23:52:33
外壳也不能买!2017年青岛男子花100元买了当摆件,4年后出事了

外壳也不能买!2017年青岛男子花100元买了当摆件,4年后出事了

云景侃记
2026-02-12 12:04:09
4 球惨败后巴萨球迷怒喊清洗!两大弃子被骂到破防,留队即是灾难

4 球惨败后巴萨球迷怒喊清洗!两大弃子被骂到破防,留队即是灾难

澜归序
2026-02-13 06:29:06
逆转大胜!霍勒迪31+9+7,森萨博28+4,快船很无奈:西部第九易主

逆转大胜!霍勒迪31+9+7,森萨博28+4,快船很无奈:西部第九易主

篮球大视野
2026-02-13 12:47:54
牛肉再次成瞩目!专家发现:肿瘤患者吃牛肉,过不多久或有4好处

牛肉再次成瞩目!专家发现:肿瘤患者吃牛肉,过不多久或有4好处

展望云霄
2026-02-13 11:19:31
1987年中国专家用激将法,让瑞士火炸药公司拿出保密的穿甲弹样本

1987年中国专家用激将法,让瑞士火炸药公司拿出保密的穿甲弹样本

混沌录
2026-02-12 23:17:09
基辅被炸,导弹飞进莫斯科电梯,乌军真干了这事。

基辅被炸,导弹飞进莫斯科电梯,乌军真干了这事。

Ck的蜜糖
2026-02-13 13:46:55
马德兴:09国少在机场关注抽签进程;浮嶋敏如何踢日本是看点

马德兴:09国少在机场关注抽签进程;浮嶋敏如何踢日本是看点

懂球帝
2026-02-12 21:53:08
克林顿不是男人!要用雪茄助兴?莱温斯基:他把我当成“自助餐”

克林顿不是男人!要用雪茄助兴?莱温斯基:他把我当成“自助餐”

老蝣说体育
2026-01-05 14:59:04
你身边有把一手好牌打的稀烂的人吗?网友:都是上辈子欠人家的

你身边有把一手好牌打的稀烂的人吗?网友:都是上辈子欠人家的

带你感受人间冷暖
2026-01-21 00:15:05
特朗普对全球下令,180天内废掉中方王牌,美媒:中国在霸凌美国

特朗普对全球下令,180天内废掉中方王牌,美媒:中国在霸凌美国

观星赏月
2026-02-13 12:02:22
特朗普未被内塔尼亚胡说服,坚持要与伊朗和哈马斯“面对面”会谈

特朗普未被内塔尼亚胡说服,坚持要与伊朗和哈马斯“面对面”会谈

阅尽天下大事
2026-02-13 13:36:51
2026-02-13 14:23:01
Java精选
Java精选
一场永远也演不完的戏
1772文章数 3859关注度
往期回顾 全部

科技要闻

DeepSeek更新后被吐槽变冷变傻?

头条要闻

男子和女子相亲第五天在泳池亲密 事后让他大跌眼镜

头条要闻

男子和女子相亲第五天在泳池亲密 事后让他大跌眼镜

体育要闻

这张照片背后,是米兰冬奥最催泪的故事

娱乐要闻

米兰冬奥摘银 谷爱凌再遭美国网友网暴

财经要闻

华莱士母公司退市 疯狂扩张下的食安隐忧

汽车要闻

探秘比亚迪巴西工厂 居然是这个画风!

态度原创

旅游
时尚
家居
手机
军事航空

旅游要闻

幸福中国·年味重庆 | 彭水乌江画廊喊你来过年:江畔寻别样年味

50+女人怎么穿更好看?过来人告诉你答案,越老越美赢麻了

家居要闻

中古雅韵 乐韵伴日常

手机要闻

新版Siri再度跳票!苹果称2026年上线承诺不变

军事要闻

美国新交付F35隐身战机没雷达

无障碍浏览 进入关怀版