【问题标题】:ANT_OPTS -Xmx1024m not workingANT_OPTS -Xmx1024m 不工作
【发布时间】:2021-12-10 01:04:10
【问题描述】:

我将环境中的 ANT_OPTS 设置为“-Xms256m -Xmx1024m”。设置后,我无法从命令提示符运行 ant 文件。它给我一个错误:

"虚拟机初始化过程中发生错误 无法为对象堆保留足够的空间 无法创建 Java 虚拟机。”

虽然我有足够的可用物理内存(超过 2048m 可用)为 ANT_OPTS 分配 1024m,但它仍然会引发上述错误。我不能将 Xmx 设置为 1024m 是否还有其他原因?

【问题讨论】:

  • 最初应该只分配 265Mb 而不是 1024Mb。你的操作系统是什么?您是否尝试过仅使用 ANT_OPTS="-Xms64m"。 64Mb 应该是默认值。这将确定是否存在内存问题或解释 ANT_OPTS 的方式。您是否尝试过修改 $ANT_HOME/bin/ant 下的 Ant shell 脚本或 Ant 批处理脚本 %ANT_HOME%/bin/ant.bat 以回显更多信息?您可以在 Ant shell 脚本中添加“set -xv”。

标签: ant heap-memory


【解决方案1】:

无论如何,这里是如何解决它:

转到开始->控制面板->系统->高级(选项卡)->环境变量->系统变量->新建:

  • 变量名:_JAVA_OPTIONS
  • 变量值:-Xmx512M

set _JAVA_OPTS="-Xmx512M"

如下图改变ant调用。

<exec>
   <arg value="-J-Xmx512m" />
</exec>

然后使用 ant 再次构建文件。 它对我有用。

【讨论】:

  • 对我不起作用。我尝试使用set 设置变量,但它没有创建它。然后我手动将它添加到高级系统属性中的环境变量按钮并重新运行我的ant tagversion 命令和相同的东西。这是在 Windows 7 上。
【解决方案2】:

您没有提及您正在运行的操作系统。如果您使用的是 Windows(尤其是 32 位),我经常会看到分配超过 800MB 作为堆的问题,无论您有多少实际可用内存。这并不是真正的 Windows 抨击:Windows JVM 想要将其所有堆分配到一个连续的块中,如果不能,它将无法启动。

我认为Java maximum memory on Windows XP 很好地解释了问题以及您可以如何尝试解决它。​​

【讨论】:

    【解决方案3】:

    无论您最初设置为最小堆,JVM 都会在启动时尝试分配。似乎在您的机器(我假设为 32 位机器)中,JVM 无法分配并且 JVM 启动失败。尝试将-Xms 设置为128 或更少。它应该可以工作。

    【讨论】:

    • 这套在哪里?
    • 没关系,我发现您可以在命令行上运行命令:例如,java -Xms128m。也许有些人已经知道这是司空见惯的事,但我认为它应该在答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多