Java HotSpot(TM) 64-Bit Server VM warning_ Sharing is only supported for boot loader classes because

今天在学习freemarker静态化页面的时候遇到了这个错误:
Java HotSpot™ 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

最终我找到了解决办法
解决办法原帖:https://stackoverflow.com/questions/65613084/java-hotspottm-64-bit-server-vm-warning-sharing-is-only-supported-for-boot-lo

您只需在代码编辑器配置的 VM 选项中包含 -Xshare:off 即可,也就是运行/调试配置 -> 编辑配置模板 -> 添加虚拟机选项 -Xshare:off
1.
image.png
2.
勾上Add VM options,点击apply
image.png

### OpenJDK 64-Bit Server VM 类共享警告问题解决方案 当运行 Java 程序时,如果遇到警告信息 `OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended`,这表明 JVM 尝试使用类数据共享(Class Data Sharing, CDS)功能,但由于引导类路径(bootstrap classpath)被修改或扩展,导致类共享仅限于引导加载程序类[^1]。 #### 警告原因分析 此警告的根本原因是 JVM 的类数据共享机制在特定条件下无法正常工作。默认情况下,JVM 使用 CDS 来优化启动时间和内存使用。然而,当用户自定义了引导类路径(例如通过 `-Xbootclasspath` 参数),或者某些框架(如 Kafka 测试环境)动态修改了类路径时,CDS 将无法应用到非引导类[^2]。 #### 解决方案 以下是几种解决该警告的常见方法: 1. **禁用类数据共享功能** 在 JVM 启动参数中添加 `-Xshare:off`,以完全禁用类数据共享功能。这种方法简单直接,能够有效消除警告信息。例如,在运行配置的 VM 选项中添加以下内容: ```bash -Xshare:off ``` 这样可以避免 JVM 尝试使用类共享机制,从而消除警告信息[^4]。 2. **调整引导类路径设置** 如果可能,检查并确保没有通过 `-Xbootclasspath` 或其他方式修改引导类路径。如果确实需要修改引导类路径,则需要明确了解其对类共享机制的影响,并根据实际情况调整配置。 3. **升级 JDK 版本** 某些旧版本的 OpenJDK 可能存在与类共享相关的兼容性问题。尝试升级到最新稳定版本的 JDK,可能会解决此类警告问题。例如,从 OpenJDK 8 升级到 OpenJDK 11 或更高版本[^3]。 4. **自定义 CDS 归档文件** 如果希望继续使用类数据共享功能,可以创建自定义的 CDS 归档文件,包含所需的类。具体步骤包括: - 使用 `java -Xshare:dump` 命令生成归档文件。 - 确保目标类被正确加载到归档中。 - 在运行时启用自定义归档文件。 #### 示例代码 以下是一个简单的示例,展示如何在运行配置中添加 `-Xshare:off` 参数以消除警告: ```bash java -Xshare:off -cp your-application.jar com.example.MainClass ``` ### 注意事项 - 禁用类数据共享功能可能会略微增加内存使用和启动时间,但通常对性能影响较小。 - 如果选择升级 JDK,请确保新版本与现有应用程序兼容。 - 在生产环境中,建议进行充分测试以验证更改对系统性能和稳定性的影响。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值