Spring Boot 3用CDS提升20%启动时间

💡 原文中文,约4700字,阅读约需12分钟。
📝

内容提要

Spring Boot发布3.3.0版本,支持使用CDS优化Java应用程序的启动时间和内存使用。通过比较Uber JAR和CDS JAR,发现CDS JAR的启动时间快18.09%,内存占用减少20.19%。

🔎

延伸解读

CDS 的适用场景与限制

CDS 通过共享存档文件加速类加载,适合启动频繁或需要快速扩展的 Java 应用。但文章中的测试基于简单 Web 应用,实际复杂应用可能因类加载模式不同而效果各异。此外,CDS 需要 Java 17+ 和额外构建步骤,并非所有环境都适用。

与 GraalVM 和 CRaC 的对比

文章提到 GraalVM 和 CRaC 也是优化启动的选项,但指出它们可能尚未完全准备好用于生产。CDS 则成熟且易于实现,无需大幅修改代码或构建流程,适合追求稳定性的团队。选择时需权衡准备程度和易用性。

实践中的注意事项

生成 CDS 友好布局需使用 jarmode 提取 Uber JAR,并确保应用在相同环境下运行以复用存档。内存占用测试结果波动较大(如 Uber JAR 从 14MB 到 33MB),建议多次运行取平均值,并关注实际生产负载下的表现。

❓

Q&A

Spring Boot 3.3.0版本的主要新特性是什么?

Spring Boot 3.3.0版本支持CDS以改善启动时间和内存消耗。

什么是CDS,它如何优化Java应用程序?

CDS(类数据共享)是Java虚拟机中的一项功能,通过创建共享存档文件来实现类的共享加载,从而缩短启动时间并减少内存占用。

CDS JAR与Uber JAR的性能比较结果如何?

CDS JAR的启动时间比Uber JAR快约18.09%,内存占用减少约20.19%。

如何创建一个使用CDS的Spring Boot应用程序?

可以使用Spring Initializr创建应用程序,添加Spring Web依赖,并使用Java 17和Spring Boot 3.3.0版本。

CDS的优势是什么?

CDS可以显著缩短Java应用程序的启动时间和减少内存占用,是优化Java应用程序的可靠选择。

在使用CDS时需要哪些先决条件?

需要在机器上安装Java 17及以上版本和Docker。

🏷️

标签

➡️

继续阅读