百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

还在使用JDK1.8?一文详解SpringBoot升级JDK17过程,告别GC卡顿

yund56 2025-08-02 23:29 11 浏览

最近在开发海外需求,需要把之前国内做的一套系统搬到海外业务上,因官网对JDK1.8版本已经不再做维护支持,客户要求需使用JDK17以上版本,因此便把国内基于JDK1.8 + SpringBoot-2.3.3.RELEASE的微服务升级成JDK17 + SpringBoot-2.7.18,本次将详细讲下升级过程中踩的一些坑,以及如何在Mac和Liux上快速安装JDK17等多个版本!

JDK1.8到17做了哪些升级?为何建议全部jdk都升到17?

JDK1.8和JDK17的主要区别

JDK 1.8(2014年发布)与JDK 17(2021年发布,LTS)的主要区别如下:

核心特性更新

  • 模块化系统(JDK 9 Jigsaw)
  • 本地变量类型推断(JDK 10 var关键字)
  • 新版垃圾回收器(ZGC、Shenandoah)
  • 文本块(JDK 13)、Switch表达式模式匹配
  • Record类(JDK 16)、密封类(JDK 17)

性能提升

  • 毫秒级的低延迟GC(ZGC性能优化),据美团开发说,在Zeus服务不同集群中,ZGC在低延迟场景见效非常可观(TP99下降了528ms,下降幅度10%47%)
  • 向量API(JDK 16孵化)
  • 更高效的容器感知(容器环境资源管理)

生态支持

  • 官方长期支持(JDK 17 LTS支持至2029年)
  • 商业许可变更(Oracle JDK vs OpenJDK)

升级JDK17推荐版本选择

  • 生产环境优先推荐 JDK 17 LTS(官方支持至2029年),LTS版本是指那些提供长期技术支持和维护的Java开发工具包
  • 若需保持旧生态兼容性,可暂用JDK 11 LTS

升级到JDK17后的JVM参数GC配置

使用ZGC的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

jvm参数解释

官方参考文档

  • Spring Boot 3.0 Release Notes:https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga
  • Oracle JDK支持路线图:https://www.oracle.com/java/technologies/java-se-support-roadmap.html

安装多版本JDK

由于本地服务器有多个应用在部署,所以需要安装多个jdk的版本,这里我将详细讲下mac和linux如何安装多版本jdk

Mac安装多版本JDK步骤

在 macOS 上管理多版本 JDK 可通过以下步骤实现(推荐使用 jenv + Homebrew 方案):

一、安装 JDK 17

1. Homebrew命令安装-国内用户安装会比较慢

# 安装 Eclipse Temurin JDK(推荐长期支持版)
brew tap homebrew/cask-versions
brew install --cask temurin@17

# 验证安装路径(默认路径)
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

博主试了下,国内使用这个命令装会一直卡着不动,建议缓存手动安装

2. 或手动下载安装

  • 官网下载 JDK 17.dmg:https://www.oracle.com/java/technologies/downloads/#java17 下载安装包
  • 安装后路径通常为:/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

下载完成后,直接点击dmg文件,再一直傻瓜式操作点击下一步,即可安装完成,安装完成界面如下

安装完成后可以看到
/Library/Java/JavaVirtualMachines/jdk/目录下多了个17的文件夹

二、安装jdk版本管理工具 jenv

# 安装 jenv
brew install jenv

# 配置 Shell(根据你的 Shell 类型选择)
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
source ~/.zshrc

三、添加 JDK 到 jenv

把jdk的全路径配置到jenv,

# 添加已安装的 JDK
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_xxx.jdk/Contents/Home  # 替换为你的 JDK8 路径
jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

# 查看已注册版本
jenv versions

四、快速切换版本

场景

命令

全局默认版本

jenv global 17 (或 1.8)

当前终端临时切换

jenv shell 17

按目录设置版本

jenv local 1.8

五、验证版本切换

# 检查 Java 版本
java -version

# 检查编译器版本
javac -version

# 查看 JAVA_HOME 路径
jenv javahome

输入命令可以看到全部版本均切换到了jdk17

六、环境变量配置(可选)

若需直接使用 JAVA_HOME 变量:

# 在 ~/.zshrc 或 ~/.bash_profile 中添加
export JAVA_HOME=$(jenv javahome)

七、IDE 配置建议

  • IntelliJ IDEA
    Preferences → Build → Build Tools → Gradle → Gradle JVM 选择对应版本
  • VSCode
    安装 Java Extension Pack,通过 Command Palette → Java: Configure Java Runtime 设置

注意事项

  1. PATH 优先级:确保 jenv shims 路径优先级高于系统默认 Java
  2. Maven/Gradle:建议在项目级配置中指定 JDK 版本(如 pom.xml 或 gradle.properties)
  3. 手动安装 JDK:Oracle JDK 与 OpenJDK 路径可能不同,需准确添加至 jenv

通过此方案,你可以无缝切换 JDK 1.8 和 17,满足不同项目的编译需求。

Linux安装JDK步骤

linux安装jdk直接使用命令安装openjdk即可完成,具体安装步骤参考我之前的文章:
https://mpbeta.csdn.net/mp_blog/creation/editor/145764470

三、SpringBoot版本升级

spring cloud和spring boot版本升级

升级了jdk后原来的低版本springboot就不可用了,由于Spring Cloud依赖于Spring Boot,用了Spring Cloud的也需要进行升级,他们之间映射支持版本关系如下:

这里我使用的是2.7.18版本

Maven构建工具版本升级

总结

本文详细讲解了如何安装jdk17版本,以及升级完成jdk17后,如何修改对应的SpringBoot相关依赖版本。如果你的微服务还是经常出现FullGC,频繁卡顿情况,可以进行JDK版本升级再修改JVM的ZGC配置,说不定一切问题都迎刃而解了!

相关推荐

SM小分队Girls on Top,女神战队少了f(x)?

这次由SM娱乐公司在冬季即将开演的smtown里,将公司的所有女团成员集结成了一个小分队project。第一位这是全面ACE的大姐成员权宝儿(BoA),出道二十年,在日本单人销量过千万,韩国国内200...

韩国女团 aespa 首场 VR 演唱会或暗示 Quest 3 将于 10 月推出

AmazeVR宣布将在十月份举办一场现场VR音乐会,观众将佩戴MetaQuest3进行体验。韩国女团aespa于2020年11月出道,此后在日本推出了三张金唱片,在韩国推出了...

韩网热议!女团aespa成员Giselle在长腿爱豆中真的是legend

身高163的Giselle,长腿傲人,身材比例绝了...

假唱而被骂爆的女团:IVE、NewJeans、aespa上榜

在韩国,其实K-pop偶像并不被认为是真正的歌手,因为偶像们必须兼备舞蹈能力、也经常透过对嘴来完成舞台。由于科技的日渐发达,也有许多网友会利用消音软体来验证K-pop偶像到底有没有开麦唱歌,导致假唱这...

新女团Aespa登时尚大片 四个少女四种style

来源:环球网

韩国女团aespa新歌MV曝光 画面梦幻造型超美

12月20日,韩国女团aespa翻唱曲《DreamsComeTrue》MV公开,视频中,她们的造型超美!WINTER背后长出一双梦幻般的翅膀。柳智敏笑容甜美。宁艺卓皮肤白皙。GISELLE五官精致...

女网友向拳头维权,自称是萨勒芬妮的原型?某韩国女团抄袭KDA

女英雄萨勒芬妮(Seraphine)是拳头在2020年推出的第五位新英雄,在还没有正式上线时就备受lsp玩家的关注,因为她实在是太可爱了。和其他新英雄不同的是,萨勒芬妮在没上线时就被拳头当成虚拟偶像来...

人气TOP女团是?INS粉丝数见分晓;TWICE成员为何在演唱会落泪?

现在的人气TOP女团是?INS粉丝数见分晓!现在爱豆和粉丝之间的交流方法变得多种多样,但是Instagram依然是主要的交流手段。很多粉丝根据粉丝数评价偶像的人气,拥有数百、数千万粉丝的组合作为全球偶...

韩国女团MVaespa Drama MV_韩国女团穿超短裙子跳舞

WelcometoDrama.Pleasefollow4ruleswhilewatchingtheDrama.·1)Lookbackimmediatelywhenyoufe...

aespa师妹团今年将出道! SM职员亲口曝「新女团风格、人数」

记者刘宛欣/综合报导南韩造星工厂SM娱乐曾打造出东方神起、SUPERJUNIOR、少女时代、SHINee、EXO等传奇团体,近年推出的aespa、RIIZE更是双双成为新生代一线团体,深受大众与粉丝...

南韩最活跃的女团aespa,新专辑《Girls》即将发布,盘点昔日经典

女团aespa歌曲盘点,新专辑《Girls》即将发布,期待大火。明天也就是2022年的7月8号,aespa新专辑《Girls》即将发行。这是继首张专辑《Savage》之后,时隔19个月的第二张专辑,这...

章泽天女团aespa出席戛纳晚宴 宋康昊携新片亮相

搜狐娱乐讯(山今/文玄反影/图科明/视频)法国时间5月23日晚,女团aespa、宋康昊、章泽天等明星亮相戛纳晚宴。章泽天身姿优越。章泽天肩颈线优越。章泽天双臂纤细。章泽天仪态端正。女团aespa亮...

Aespa舞台暴露身高比例,宁艺卓脸大,柳智敏有“TOP”相

作为SM公司最新女团aespa,初舞台《BlackMamba》公开,在初舞台里,看得出来SM公司是下了大功夫的,虽然之前SM公司新出的女团都有很长的先导片,但是aespa显然是有“特殊待遇”。运用了...

AESPA女团成员柳智敏karina大美女

真队内速度最快最火达成队内首个且唯一两百万点赞五代男女团中输断层第一(图转自微博)...

对来学校演出的女团成员语言性骚扰?韩国这所男高的学生恶心透了

哕了……本月4日,景福男子高中相关人士称已经找到了在SNS中上传对aespa成员进行性骚扰文章的学生,并开始着手调查。2日,SM娱乐创始人李秀满的母校——景福高中迎来了建校101周年庆典活动。当天,S...