类数据共享

Class Data Sharing (CDS) 是一个 JVM 特性,可以帮助减少 Java 应用程序的启动时间和内存占用。

在 Java 24 中,CDS 被 JEP 483 中的 AOT Cache 所取代。 Spring Boot 同时支持 CDS 和 AOT cache,如果您使用的 JVM 版本支持(Java 24+),建议使用后者。

CDS

要使用 CDS,您应该首先以解压形式对应用程序进行训练运行:

$ java -Djarmode=tools -jar my-app.jar extract --destination application
$ cd application
$ java -XX:ArchiveClassesAtExit=application.jsa -Dspring.context.exit=onRefresh -jar my-app.jar

这将创建一个 application.jsa 归档文件,只要应用程序没有更新,就可以重复使用。

要使用归档文件,您需要在启动应用程序时添加一个额外参数:

$ java -XX:SharedArchiveFile=application.jsa -jar my-app.jar
有关 CDS 的更多详细信息,请参阅 CDS 操作指南Spring Framework 参考文档

AOT Cache

要使用 AOT cache,您应该首先以解压形式对应用程序进行训练运行:

$ java -Djarmode=tools -jar my-app.jar extract --destination application
$ cd application
$ java -XX:AOTMode=record -XX:AOTConfiguration=app.aotconf -Dspring.context.exit=onRefresh -jar my-app.jar
$ java -XX:AOTMode=create -XX:AOTConfiguration=app.aotconf -XX:AOTCache=app.aot -jar my-app.jar

这将创建一个 app.aot 缓存文件,只要应用程序没有更新,就可以重复使用。 中间的 app.aotconf 文件不再需要,可以安全删除。

要使用缓存文件,您需要在启动应用程序时添加一个额外参数:

$ java -XX:AOTCache=app.aot -jar my-app.jar