当前位置:首页 > 科技  > 软件

新项目为什么建议你使用 JDK17,一文告诉你升级的方法和不可拒绝的理由!

来源: 责编: 时间:2024-05-29 17:30:43 248观看
导读1、背景 TLDR;垃圾回收器的暂停问题对实时响应要求较高的服务来说,一直是个痛点, CMS和G1等主流垃圾回收器的数十毫秒乃至上百毫秒的暂停时间相当致命。此外,调优门槛也相对较高,需要对垃圾回收器的内部机制有一定的了解,

1、背景 TLDR;

urC28资讯网——每日最新资讯28at.com

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

urC28资讯网——每日最新资讯28at.com

ZGC 作为一款低延迟垃圾收集器,旨在满足以下目标:urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

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

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

urC28资讯网——每日最新资讯28at.com

低延迟的业务需求,毫秒级耗时的 GCurC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

据美团的开发说:urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

在 Zeus 服务不同集群中,ZGC 在低延迟(TP999 < 200ms)场景中收益较大:urC28资讯网——每日最新资讯28at.com

  • TP999:下降 12~142ms,下降幅度 18%~74%。
  • TP99:下降 5~28ms,下降幅度 10%~47%。

urC28资讯网——每日最新资讯28at.com

可以忽略的升级 JDK17 的理由:urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

  • 新版的 Spring Boot 官方最低支持 JDK17,想使用新Spring版本,就得升级;
  • JIT 编译器的增强;
  • JDK 17 中的新功能,例如 Sealed 类、Pattern Matching、Records 等;
  • 升级到 JDK 17 可以获得更好的安全性,包括修复的漏洞和强化的安全机制。

1.2 适用场景

urC28资讯网——每日最新资讯28at.com

  • 网关服务
  • Web API

urC28资讯网——每日最新资讯28at.com

暂不推荐场景:定时任务、批量任务、高 CPU 密集型应用。urC28资讯网——每日最新资讯28at.com

2、升级前后对比

urC28资讯网——每日最新资讯28at.com

话不多说,先看效果。urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

环境:urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

CPU:4cMem: 6GB

urC28资讯网——每日最新资讯28at.com

G1 参数:urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

-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

urC28资讯网——每日最新资讯28at.com

ZGC 参数:urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

--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

urC28资讯网——每日最新资讯28at.com

上述两个参数,均已经在生产环境实验过, 生产环境的机器是单机拥有 1500 业务  tps 的机器。urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

2.1 GC 耗时对比

urC28资讯网——每日最新资讯28at.com

图片图片urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

从上图可见, GC 耗时是有着质的区别的,这个区别是你用 CMS、Parallel GC、 G1 等呕心沥血也调校不出来的。urC28资讯网——每日最新资讯28at.com

这么短的GC, 可以保证,应用因为JVM层面的卡顿都保持在 1ms 以内, 这也是为啥说这点才是不能拒绝的理由。urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

2.2 CPU 使用对比

urC28资讯网——每日最新资讯28at.com

图片urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

从 CPU 使用上看, JDK17 相同的代码, 比 JDK8 要高出 10 ~ 20%urC28资讯网——每日最新资讯28at.com

3、升级方法

urC28资讯网——每日最新资讯28at.com

3.1 JDK 选择或安装

urC28资讯网——每日最新资讯28at.com

使用 JDK17 前必须要安装 JDK17, 对于不同的 Linux 发行版或者操作系统安装方法各不相同, 下面给出了一些样例, 仅供参考。urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

# ubuntu 安装jdk17sudo apt install openjdk-17-jdk# docker 基础镜像docker pull openjdk:17-slimdocker pull openjdk:17-jdk-oraclelinux7FROM openjdk:17-slim

urC28资讯网——每日最新资讯28at.com

3.2 JVM 参数调整

urC28资讯网——每日最新资讯28at.com

有了 JDK17 后,已经具备了让你的 Java 程序运行在 JDK17 上的基本条件了,下一步便是配置 JVM 参数如下(有需要的话,可以自行把换行整理下):urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

--add-opens=java.base/java.lang=ALL-UNNAMED /-Xms1500m -Xmx1500m /-XX:ReservedCodeCacheSize=256m /-XX:InitialCodeCacheSize=256m / -XX:+UnlockExperimentalVMOptions /-XX:+UseZGC /-XX:Cnotallow=1 -XX:ParallelGCThreads=2 /-XX:ZCollectinotallow=30 -XX:ZAllocatinotallow=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

urC28资讯网——每日最新资讯28at.com

参数释义

图片图片urC28资讯网——每日最新资讯28at.com

urC28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-91523-0.html新项目为什么建议你使用 JDK17,一文告诉你升级的方法和不可拒绝的理由!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 有人问我架构图、流程图为什么这么好看?

下一篇: 服务失败后如何重试?你学会了吗?

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 分享六款相见恨晚的PPT模版网站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS网站旨在为全球Office用户提供丰富的高品质原创PPT模板、实用文档、数据图表及个性化定制服务。优点:OfficePLUS是微软官方网站,囊括PPT模板、Word模
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人&ldquo;珍藏&rdquo;是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了&ldquo;本地生活&rdquo;入口,位置较深,位于首页的&ldquo;充值中心&rdquo;内,目前主要售卖美食相关的
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
Top