类数据共享(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