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

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

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

最近在开发海外需求,需要把之前国内做的一套系统搬到海外业务上,因官网对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配置,说不定一切问题都迎刃而解了!

相关推荐

5套简约大气工作总结PPT模板,可直接套用,无门槛免费领取

日常工作中,经常需要制作PPT,自己设计耗时又耗力,很多时候我们会找模板。今天给大家分享5套简约大气工作总结PPT模板,可直接套用,无门槛免费领取。下面先预览一下这些模板吧,看看有没有自己喜欢的,领取...

家人们,全球精选Keynote, PPT模板免费下载

大家好呀,早上好!今天我要给大伙推荐一个超实用的资源,那就是我自个儿觉得特别棒的一个网站,里面有PPT模板,还有Word简历模板呢。这个网站主要分享的是一些从国外来的顶级优质的PPT、Key...

PPT想要高大上?6大免费高清图片下载网站帮你大忙!

1、Pixabay网站和APP网站共有890000张图片、矢量文件和艺术插图,不需要翻墙,注册之后全部可以免费下载,可商用,选择“简体中文”语言,即可支持中文搜索,对搜索结果可以根据图像的种类、方向...

一个有情怀的免费PPT模板下载网站!免费!免费!免费!!!

优品PPT网址:http://www.ypppt.com/性质:全部免费下载;质量高简介:网站的开头就清晰地写明,这是一个高质量而且免费的PPT模板网站,推荐大家使用。下载:选中模板,点击「点击下载...

各种ppt模板可以在哪免费下载?这些方法快来试试

很多小伙伴平时都会在网上下载各种各样的PPT模板,以备不时之需,毕竟我们在日常学习以及工作的过程中都会接触到ppt,那么各种各样的ppt模板我们可以在哪些地方免费下载呢?今天小编就例举了一些方法,下面...

2024年,分享10个PPT免费神器工具,用了就知道有多牛!

龙年大吉,新的一年又开始了,大家是不是还没有进入工作状态,哈哈。还是跟往年一样,第一篇文章,跟大家分享一些设计工具,整理了10个不错的神器。1、MJAIGC火了以后,我们团队也在加紧学习,运用人工智能...

这29套欧美PPT完全免费,千万别错过

Hi,各位小伙伴们,早上好!小伙伴们,好久没有给大家分享免费模板了,你不是一直想要一些国外PPT吗?今天恰好有时间,就给大家分享一批国外极简风格PP模板,页数有的70多页,有的100多页,非常实用,总...

我发现,这些PPT图形真是不错,免费送你

Hi,小伙伴,大家晚上好,小编又来分享资源了。俗话说的好,资源在手工作不愁,今天我又收藏了一些实用的PPT图形素材,就将它们分享给大家吧,图形包含的种类太多,除了各种数据图形,还有标题,重点,分类,聚...

宝,我给你送免费下载PPT模板的网站来了

本文很短,放心食用。不知道是因为答辩的原因,还是打工人职场汇报,最近总是有小伙伴在问有没有免费的ppt模板,所以决定写一篇简短的文章来讲一下如何免费下载ppt模板。先甩几个网站,放心都是免费的,不收钱...

你一直在找的矢量小人的素材,这个网站一大把!赶紧偷偷私藏起来

Hi,我是秋小叶~正在学习PPT的你,一定对阿文这样漫画般的教程不会感到陌生。那是什么让阿文的教程如此生动有趣,让人看得如享受一般?今天就来揭秘!01戏精小绿人有这么一个向门口逃跑的小绿人,我赌...

这5款神仙级PPT插件,每一款都是宝藏,新手必备

一提到做PPT,很多人可能心里咯噔一下,感觉煎熬的日子又来了。坐在电脑前冥思苦想,看着空白的界面,脑子一篇空白,对于PPT的设计没想法没灵感,费尽心思做出来的PP,领导可能还要一改再改……难道,就没有...

别再冲会员套模板了,用AI免费做原生PPT

在职场中,制作精美的PPT往往是展示专业能力和提升工作效率的关键。然而,传统的PPT制作不仅耗时费力,还需要一定的设计技能。随着AI技术的发展,现在有了更高效、更智能的解决方案。本文将介绍如何利用AI...

不花一分钱,白嫖上万个素材,这四个日本网站简直是设计师的天堂

日本发生7.4级地震,多个公司都受到了影响。我今天早上一看手机,就刷到了这条新闻,吓得我赶紧去看了眼收藏夹!还好收藏的图标网站依然能进,并没有受到太大影响。既然说到了这儿,那我就把这几个日本图标网站分...

提高PPT效率的5个专用网站,阿里这款三维图标素材,免费下载!

工欲善其事必先利其器,一款好的工具往往能大幅度提高设计的效率和质量。那么,平时设计PPT时,大家有没有收藏一些好用的工具呢?今天跟大家分享收藏已久的9款工具,每个都好用,看一下。flaticon(图标...

优品PPT,一个有情怀的免费PPT模板下载网站

优品PPT是一个免费简报模板、背景、图表、素材和字体的网站,收录许多和PowerPoint简报投影片相关的资源,其中很多人可能会用到的就是各种类型的PPT简报模板,只要找到自己需要的模板稍作修改、加入...