【问题标题】:MAVEN_OPTS ignored when setting java heap size设置 java 堆大小时忽略 MAVEN_OPTS
【发布时间】:2023-04-10 13:51:01
【问题描述】:

这怎么可能?我不正确理解linux,因为我不 知道这是怎么发生的。我相信这里发生了其他事情,因为我试图将最大堆大小设置为 1G,但它失败了

MAVEN_OPTS 指定了 1024m 的堆,但是 maven 命令失败,因为堆是 4096m。机器是32位安装6G的

内存

$free -h
             total       used       free     shared    buffers     cached
Mem:          5.8G       3.8G       2.0G       186M       351M       2.1G
-/+ buffers/cache:       1.3G       4.4G
Swap:         5.8G         0B       5.8G

Maven

echo $MAVEN_OPTS
-Xms512m -Xmx1024m -XX:MaxPermSize=1024m

$ mvn -version
Invalid maximum heap size: -Xmx4096m
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Java

java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) Server VM (build 25.111-b14, mixed mode)

Linux

uname -a 102-Ubuntu SMP Tue Aug 11 14:28:35 UTC 2015 i686 i686 i686 GNU/Linux

【问题讨论】:

  • 谢谢我之前看过。我相信这里发生了其他事情,因为我试图将最大堆大小设置为 1G,但它失败了
  • which mvn 的输出是什么?它是一个shell脚本吗?它的内容是什么?
  • 什么是 Maven 命令?它是如何崩溃的(你看到了什么错误)?

标签: java maven


【解决方案1】:

在下面重新设置并尝试:

Linux:

导出 MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"

窗户

设置 MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"

【讨论】:

  • 同样的结果。似乎堆大小的值是在其他地方设置的,但我想不出一个比 bash 会话 cli 具有先见之明的地方。
  • 签入配置文件 - ${user.home}/.m2/settings.xml
  • 曾经检查过 JAVA_OPTS 吗?
  • 检查系统环境变量 MAVEN_OPTS 值
  • 您好,Windows 命令不正确。应该是set MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=1024m。此外,MaxPermSIze 在 Java 8+ 中被忽略。新设置为-XX:maxMetaspace=1024m
【解决方案2】:

我刚刚遇到了同样的错误,解决方案是通过this blog post 提供给我的。帖子里有说明;

检查mvn.bat:MAVEN_OPTS直接作为JVM参数传递:

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" %MAVEN_JAVA_EXE% %MAVEN_OPTS% -类路径 %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

如果我们运行 set MAVEN_OPTS="-Xmx1024M -XX:MaxPermSize=256M",前面的 命令将替换为 %MAVEN_JAVA_EXE% "-Xmx1024M -XX:MaxPermSize=256M" ...

如果我们运行 java "-Xmx1024M -XX:MaxermSize=256M" -version: 我们会看到 同样的错误信息。

解决方法很简单:我们可以运行:set "MAVEN_OPTS=-Xmx1024M -XX:MaxPermSize=256M" 或者完全去掉双引号:设置 MAVEN_OPTS=-Xmx1024M -XX:MaxPermSize=256M

MAVEN_OPTS 的值不包含双引号。

这当然解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多