启动jar包报Initial heap size大于maximum heap size错误如何解决
错误原因
报错核心触发逻辑是系统全局环境变量中存在_JAVA_OPTIONS配置项,该配置的JVM参数优先级高于你在启动命令中传入的参数,你设置的-Xmx4G被全局变量里的-Xmx512M强制覆盖,实际生效的最大堆内存仅为512M,远小于你指定的3G初始堆内存,因此触发堆大小校验错误。
解决方法
以下三种方案按需选择即可:
- 方案1:单次启动临时覆盖全局配置(无需修改系统设置,仅当前命令生效)
在启动命令最前方添加清空_JAVA_OPTIONS的前缀即可,修改后的完整命令如下:_JAVA_OPTIONS="" "C:\Program Files\Eclipse Foundation\jdk-16.0.2.7-hotspot\bin\java.exe" -Xmx4G -Xms3G -jar paper.jar - 方案2:修改全局环境变量永久生效
- 按下
Win+R组合键,输入sysdm.cpl后回车打开系统属性面板 - 切换到「高级」选项卡,点击底部的「环境变量」按钮
- 分别在「用户变量」和「系统变量」列表中查找名为
_JAVA_OPTIONS的配置项 - 可以直接删除该配置项(后续所有JVM启动都将优先使用命令行参数),也可以修改项的值,将其中的
-Xmx512M调整为你需要的-Xmx4G - 保存所有修改后重启命令行窗口,再次执行原始启动命令即可正常运行
注意:修改环境变量后必须重启所有已打开的命令行、IDE等程序,否则新配置不会加载
- 按下
- 方案3:调整启动参数适配全局限制(仅临时应急使用,不推荐)
你也可以直接提高启动命令中最大堆的参数值,超过全局限制的512M即可,示例如下:
该方案仅在部分JDK版本中生效,优先选择前两种方案。"C:\Program Files\Eclipse Foundation\jdk-16.0.2.7-hotspot\bin\java.exe" -Xmx8G -Xms3G -jar paper.jar
内容的提问来源于stack exchange,提问作者Landyn J
相关产品推荐
相关产品推荐

