You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dynamic CDS无法使用归档文件问题求助

问题分析与解决方案

错误根源

你用错了JVM参数:-XX:DumpLoadedClassList的作用是生成已加载类的名称列表(文本文件),不是直接生成Dynamic CDS的二进制归档文件(.jsa)。你当前的cds.jsa本质是个文本文件,所以加载时会出现魔数不匹配的错误(0x4f4e2023对应文本开头的# NO 标识)。

正确操作步骤

1. 生成已加载类的列表文件

先运行应用,导出所有加载的类名到文本文件(建议用.txt后缀区分,避免混淆):

java -Xlog:cds -XX:DumpLoadedClassList=cds-classes.txt -jar app-0.0.1-SNAPSHOT.jar

执行完成后,你会得到cds-classes.txt,打开可以看到一堆类名,这说明步骤正确。

2. 基于类列表生成CDS归档文件

使用导出的类列表,生成真正的CDS二进制归档:

java -Xlog:cds -Xshare:dump -XX:SharedArchiveFile=cds.jsa -XX:ClassList=cds-classes.txt -jar app-0.0.1-SNAPSHOT.jar

这个命令会基于类列表和应用的类路径,生成符合要求的.jsa归档文件。

3. 使用CDS归档启动应用

现在可以用正确的归档文件启动应用了:

java -Xlog:cds -XX:SharedArchiveFile=cds.jsa -jar app-0.0.1-SNAPSHOT.jar

启动日志中会出现类似Loaded shared classes from archive的提示,说明CDS加载成功。

额外注意事项

  • 生成归档和启动应用必须使用同一版本、同一环境的JDK,CDS归档和JDK版本强绑定,跨版本无法使用。
  • 生成类列表时,确保应用正常启动完成(至少加载完核心类),否则类列表不完整会导致归档效果打折扣。
  • Spring Boot 2.6.x对CDS的支持已经比较完善,默认场景下上述步骤即可生效,无需额外调整自定义类加载器参数。

内容的提问来源于stack exchange,提问作者SANN3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:15:34