Spring Boot CDS 支持与 Project Leyden 展望

Spring Boot CDS 支持与 Project Leyden 展望

💡 原文英文,约1100词,阅读约需4分钟。
📝

内容提要

Spring Boot 3.3引入了CDS支持,通过优化JDK类加载,提高运行效率和启动速度,减少内存消耗。还引入了自解压可执行JAR和Buildpacks CDS支持,更容易为Spring Boot应用创建CDS存档。CDS和Spring AOT的结合可以实现更快的启动和更低的内存消耗。此外,Spring Boot使用的CDS友好布局也与Project Leyden兼容,提供更快的启动和更小的容器镜像。

🔎

延伸解读

CDS 与 GraalVM 原生镜像的取舍

文章指出,CDS 带来的启动时间提升不如 GraalVM 原生镜像显著,但优势在于仍可使用常规 JVM,副作用极少。对于希望以较低迁移成本获得性能收益的团队,CDS 是更平滑的选择;而追求极致启动速度且能接受原生镜像约束的场景,GraalVM 仍是首选。Spring Boot 同时支持两者,开发者可根据实际需求权衡。

自解压可执行 JAR 的实用价值

直接运行可执行 JAR 并非生产环境最高效的方式,但此前缺乏一等公民支持。Spring Boot 3.3 引入的自解压功能,仅需 java 命令即可将 JAR 解压为 CDS 友好布局,从而满足 CDS 对类路径、JAR 时间戳等约束。这降低了手动配置的复杂度,使开发者能更轻松地创建 CDS 存档并享受启动加速。

Buildpacks 集成 CDS 的自动化与注意事项

Buildpacks 提供集成 CDS 支持,自动执行训练运行、解压 JAR、打包 CDS 存档并在容器启动时启用。但训练运行会实例化 Spring Bean 而不启动完整生命周期,可能触发早期数据库交互,需通过配置或环境变量避免。此外,Spring AOT 与 CDS 训练选项不能同时使用,启用前需确保构建已配置 AOT 并考虑部署环境。

Project Leyden 的兼容性与未来收益

Spring Boot 使用的 CDS 友好布局与 Project Leyden 兼容,后者可视为 CDS 的继任者,能进一步加快启动、缩小容器镜像并支持 AOT 预热。文章数据显示,结合 Project Leyden 和 Spring AOT 可实现约 4 倍启动速度提升。这表明当前为 CDS 所做的优化投资,未来可平滑过渡到 Leyden,获得更优性能。

❓

Q&A

Spring Boot 3.3的CDS支持有什么优势?

Spring Boot 3.3的CDS支持提高了应用的运行效率和启动速度,同时减少了内存消耗。

CDS和GraalVM原生镜像支持有什么区别?

CDS的启动时间改善不如GraalVM原生镜像显著,但仍然提供重要的性能提升,且可以在常规JVM上使用。

如何创建CDS存档以提高Spring Boot应用的性能?

可以通过执行训练运行并使用自解压可执行JAR来创建CDS存档,具体命令为:java -XX:ArchiveClassesAtExit=application.jsa -jar application/my-app.jar。

Spring Boot的自解压可执行JAR功能有什么作用?

自解压可执行JAR功能允许更高效地运行Spring Boot应用,并符合CDS和Project Leyden的约束。

在MacBook M2上使用CDS的性能提升如何?

在MacBook M2上,结合CDS的提取应用启动速度提高约1.5倍,内存消耗降低16%。

Project Leyden与Spring Boot的结合能带来什么好处?

Project Leyden与Spring Boot结合可以实现约3倍的启动速度提升和更小的容器镜像。

🏷️

标签

➡️

继续阅读