生产环境应选用openjdk 21 lts(支持至2026年9月),优先从eclipse temurin或bellsoft官网下载msi安装包,架构须与系统一致,安装路径禁用空格和中文,正确配置系统级java_home和path,并启用g1gc、固定堆内存及gc日志。

生产环境部署 JDK 21,核心不是“装上就行”,而是确保稳定、安全、可运维。OpenJDK 21 LTS(支持至2026年9月)是当前企业级唯一推荐选择,Oracle JDK 8 已停止安全更新,不适用于任何生产场景。
选对版本和安装包
只从两个可信源下载:
- Eclipse Temurin(Adoptium):https://adoptium.net —— 社区驱动、通过 TCK 认证、长期维护
- Liberica JDK(BellSoft):https://bellsoft.com/java —— 商业支持可选、ARM/x64 全架构覆盖、含完整调试工具
务必使用 .msi 安装包(Windows)或 .tar.gz + 包管理器(Linux),避免第三方“精简版”——它们常删掉 javac、jstack、jmods 等关键组件,线上排查时直接失能。架构必须严格匹配:x64 服务器装 x64 JDK,ARM64 服务器装 ARM64 JDK,混用会导致 Spring Boot 启动报 UnsatisfiedLinkError。
安装路径与环境变量规范
路径不能含空格和中文,例如:C:\Java\jdk-21.0.2 ✅,C:\Program Files\Java ❌。空格会破坏老脚本的参数解析逻辑,导致 JAVA_HOME 读取失败。
系统级环境变量必须设两处:
-
JAVA_HOME 指向 JDK 根目录(如
C:\Java\jdk-21.0.2),不是bin子目录 -
Path 中只加
%JAVA_HOME%\bin,禁止写死绝对路径(如C:\Java\jdk-21.0.2\bin),否则升级 JDK 时需同步改两处
所有变量设为 系统级(非当前用户级),因为 Windows 服务、Tomcat Service Installer、IIS 反向代理等均以 LocalSystem 或专用账户运行,无法读取用户变量。配置后重启命令行,执行:
echo %JAVA_HOME% → 应输出路径where java → 应返回
%JAVA_HOME%\bin\java.exe
JVM 启动参数建议(Spring Boot / Tomcat 场景)
生产环境禁用默认堆策略,必须显式设定:
- 启用 G1 垃圾收集器:
-XX:+UseG1GC - 固定堆内存(防抖动):
-Xms2g -Xmx2g(按实际应用需求调整) - 开启 GC 日志(便于问题回溯):
-Xlog:gc*:file=logs/gc.log:time,tags,level:filecount=5,filesize=100m - 关闭偏向锁(JDK 15+ 默认禁用,但显式声明更稳妥):
-XX:-UseBiasedLocking
特别注意:运行时 JDK 版本必须 ≥ 编译时 JDK 版本。若用 JDK 21 编译的 Spring Boot 3.5.x 应用,部署到仅装 JDK 17 的服务器,必然报 Unsupported class file major version 错误。
验证与日常运维要点
部署后必须做三件事:
- 运行
java -version确认输出含21.x.x和Temurin或Liberica字样 - 检查
javac -version,确认编译器可用(开发/运维诊断必备) - 启动应用前,用
jps -l和jstack <pid></pid>验证调试工具链完整
定期检查官方渠道的补丁公告(Temurin/Liberica 每季度发布安全更新),避免因忽略 CVE 而被扫描工具标记高危。











