对于最新稳定版本,请使用Spring Framework 7.0.1spring-doc.cadn.net.cn

CDS

类数据共享(CDS)是JVM的一个功能,可以帮助减少Java应用的启动时间和内存占用。spring-doc.cadn.net.cn

要使用此功能,应为 应用。Spring 框架提供了一个钩点,方便创建 档案。一旦归档可用,用户应通过JVM标志选择使用。spring-doc.cadn.net.cn

创建CDS档案

应用程序退出时可以创建CDS归档。Spring 框架提供了一种作模式,使得进程在应用上下文已经焕然一新。在此模式下,所有非懒惰的初始化单例 已被实例化,且InitializingBean#afterPropertiesSet回访已经有 调用;但生命周期尚未开始,且ContextRefreshedEvent尚未 已发表。spring-doc.cadn.net.cn

要创建归档,必须指定两个额外的JVM标志:spring-doc.cadn.net.cn

要创建CDS归档,你的JDK/JRE必须有一个基础映像。如果你把上面的旗帜加到 你的启动脚本,你可能会收到类似这样的警告:spring-doc.cadn.net.cn

-XX:ArchiveClassesAtExit is unsupported when base CDS archive is not loaded. Run with -Xlog:cds for more info.

基础CDS归档通常开箱即用,但如有需要,也可以通过发布以下文件创建 命令:spring-doc.cadn.net.cn

$ java -Xshare:dump

使用档案

一旦档案可用,添加-XX:SharedArchiveFile=application.jsa致你的初创公司 脚本以使用它,假设application.jsa工作目录中的文件。spring-doc.cadn.net.cn

为了检查CDS缓存是否有效,你可以使用(仅用于测试,不适用于生产环境)-Xshare:on哪 如果无法启用CDS,会打印错误信息并退出。spring-doc.cadn.net.cn

要了解缓存的效果,你可以通过添加添加来启用类加载日志 一个额外属性:-Xlog:class+load:file=cds.log.这会生成一个cds.log每个 尝试加载一个类及其源代码。从缓存加载的类应当具有 一个“共享对象文件”源,如下示例所示:spring-doc.cadn.net.cn

[0.064s][info][class,load] org.springframework.core.env.EnvironmentCapable source: shared objects file (top)
[0.064s][info][class,load] org.springframework.beans.factory.BeanFactory source: shared objects file (top)
[0.064s][info][class,load] org.springframework.beans.factory.ListableBeanFactory source: shared objects file (top)
[0.064s][info][class,load] org.springframework.beans.factory.HierarchicalBeanFactory source: shared objects file (top)
[0.065s][info][class,load] org.springframework.context.MessageSource source: shared objects file (top)

如果无法启用CDS,或者你有大量类没有从缓存加载出来,请确保 创建和使用档案时满足以下条件:spring-doc.cadn.net.cn