Maven 2 在Windows上的Maven 2下设置Java堆空间

Maven 2 在Windows上的Maven 2下设置Java堆空间,maven-2,Maven 2,我在我的项目构建过程中收到了这个消息 java.lang.OutOfMemoryError:java堆 空间 如何增加堆空间,我有8Gb或RAM maven不可能消耗那么多,我在linux上找到了这个方法,但我在Windows7上。如何在windows下更改java堆空间?它应该是相同的命令,除了SET而不是EXPORT之外 set MAVEN_OPTS=-Xmx512m将为其提供512Mb的堆 set MAVEN_OPTS=-Xmx2048m将为其提供2Gb的堆 您正在寻找java的两个选项

我在我的项目构建过程中收到了这个消息

java.lang.OutOfMemoryError:java堆 空间


如何增加堆空间,我有8Gb或RAM maven不可能消耗那么多,我在linux上找到了这个方法,但我在Windows7上。如何在windows下更改java堆空间?

它应该是相同的命令,除了SET而不是EXPORT之外

  • set MAVEN_OPTS=-Xmx512m将为其提供512Mb的堆
  • set MAVEN_OPTS=-Xmx2048m将为其提供2Gb的堆

您正在寻找java的两个选项:

  • -最大堆大小
  • -Xms起始堆大小
将它们放在
java
可执行文件的命令行调用中,如下所示:

java -Xms512M -Xmx1024M my.package.MainClass
请记住,根据应用程序的不同,您可能希望起始堆大小和最大堆大小相同,因为这样可以避免在运行时调整堆的大小(这可能会占用需要响应的应用程序的时间)。调整堆的大小可能需要移动大量对象并重新记账


对于每天的项目,做你认为足够好的事情。配置文件以获取帮助。

要设置的环境变量是
MAVEN\u OPTS
,例如
MAVEN\u OPTS=-Xmx1024m
。pom中的
maxmem
配置仅在将编译器插件设置为fork
javac
到新JVM中时适用。否则,插件将在与Maven相同的VM中运行,从而在通过
Maven\u OPTS在命令行上传递的内存中运行

要在Windows 7下设置MAVEN_选项:

  • 右键单击我的电脑上的,然后选择属性(键盘快捷键按Windows+暂停/中断)
  • 单击位于系统属性左侧导航中的高级系统设置链接,以显示高级系统属性
  • 转到“高级”选项卡,然后单击“高级系统属性”配置窗口底部的“环境变量”按钮
  • 创建一个新用户变量,将变量名设置为MAVEN_OPTS,并将变量值设置为
    -Xmx1024m
    (或更多)

  • 打开新的命令窗口并运行
    mvn

    如果在surefire(或failsafe)JUnit测试运行期间堆空间不足,则更改MAVEN_选项可能对您没有帮助。我一直在MAVEN_OPTS中尝试不同的配置,但运气不佳,直到我发现解决了问题

    基本上,JUnits分叉进入自己的环境,忽略MAVEN_OPTS中的设置。您需要在pom中配置surefire,以便为JUnits添加更多内存

    希望这能为其他人节省一些时间


    编辑:从复制解决方案,以防某一天链接中断:

    
    org.apache.maven.plugins
    为了指出这一点,自从我给出这个答案以来,surefire已经有了一些发展。下面是他们的链接和更新的代码示例(arg行仍然是这个问题的重要部分):

    
    org.apache.maven.plugins
    maven surefire插件
    2.20
    3.
    真的
    -Xmx1024m-XX:MaxPermSize=256m
    我的测试模式${surefire.forkNumber}
    FORK_目录${surefire.forkNumber}
    
    在Mac上:
    不要使用
    JAVA\u选项
    MAVEN\u选项
    ,而是使用JAVA\u选项。这管用

    在尝试使用MAVEN_OPTS变量时运气不佳,我遇到了一个适合我的方法。所以我所要做的就是将-Xms128m-Xmx1024m添加到默认的VM选项中,它就工作了

    要在Eclipse中更改这些,请转到窗口->首选项->Java->已安装的JRE。选择选中的JRE/JDK并单击编辑。

    它成功了- 要在Eclipse中进行更改,请转到窗口->首选项->Java->已安装的JRE。选择选中的JRE/JDK并单击编辑

    windows上的默认VM参数=-Xms128m-Xmx1024m

    添加一个环境变量(在系统变量和用户变量中,我有一个奇怪的问题,它从不同的地方获取var,所以我将它们添加到这两个变量中)

    把它命名为MAVEN_OPTS

    值将为:
    -Xms1024m-xmx300m-XX:MaxPermSize=1024m-XX:+cmsclasssunloadingerabled

    数字可以不同,使其与您的mem大小相对应


    我有这个问题,这个解决了它,没有别的

    我同意它应该是同一个命令,但这并不能说明它是真的,这就是为什么
    C:\my\u project>MAVEN\u OPTS=-Xmx512m'MAVEN\u OPTS'不能被识别为内部或外部命令、可操作程序或批处理文件的原因。
    glowcoder有点错误。您不需要导出变量,但要给它们赋值,您需要设置。如果您想在每个构建中使用相同的值,您还可以将MAVEN_OPTS设置为windows环境变量。@Gandalf您需要将该集放在前面@Jeremy yes,这就是为什么它说使用set而不是EXPORT我假设您使用的是64位版本的windows?如果不是,您将不会指定任何超过1.5G的堆大小,JVM将需要允许您直接使用的其他0.5G窗口。有一个选项可以让windows只使用1G作为内核模式代码,3G作为用户模式代码,但sun JVM不允许您使用它。@vickirk我使用64位版本的windows您也使用64位版本的JVM吗?在JDK下载页面的下拉列表中,它将被列为Windows x64:正如ebelisle所说,这个选项根本不起作用,因为您使用Maven,必须至少指定一个带“-D”的Maven选项,但它仍然不是我们所说的java命令这对我的构建速度有任何影响吗?有什么建议可以通过分配更多内存来改进我的maven构建吗