代码之家  ›  专栏  ›  技术社区  ›  Gandalf StormCrow

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

  •  91
  • Gandalf StormCrow  · 技术社区  · 16 年前

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

    空间

    如何增加堆空间,我有8Gb或RAM maven不可能消耗那么多,我发现了这个 http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the-java-heap-memory-for-maven-2-on-linux/ 如何在linux上做到这一点,但我在Windows7上。如何在windows下更改java堆空间?

    8 回复  |  直到 13 年前
        1
  •  117
  •   JasonMArcher TWE    12 年前

    要设置的环境变量为 MAVEN_OPTS MAVEN_OPTS=-Xmx1024m . 这个 maxmem pom中的配置仅在将编译器插件设置为fork时适用 javac 进入一个新的JVM。否则,该插件将在与Maven相同的VM中运行,从而在通过命令行传递的内存中运行 MAVEN\u选项 .

    要在Windows 7下设置MAVEN\u选项:

    1. 右击 属性 窗户 )
    2. 单击 链接位于系统属性的左侧导航中,以显示 高级系统属性
    3. 高级 点击 按钮位于 高级系统属性
    4. 创建 新建 变量名 选择并设置 -Xmx1024m (或更多)

    mvn .

        2
  •  45
  •   Marquee    9 年前

    如果在surefire(或failsafe)JUnit测试运行期间堆空间不足,那么更改MAVEN\u选项可能对您没有帮助。我一直在MAVENïOPTS中尝试不同的配置,但运气不好,直到找到 this post 解决了问题。

    基本上,JUnits分叉到自己的环境中,并忽略MAVEN\u OPTS中的设置。您需要在pom中配置surefire,为JUnits添加更多内存。

    希望这可以节省别人一些时间!


    编辑:复制解决方案 Keith Chapman's blog 以防有一天链接中断:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <forkMode>pertest</forkMode> 
        <argLine>-Xms256m -Xmx512m</argLine>
        <testFailureIgnore>false</testFailureIgnore> 
        <skip>false</skip> 
        <includes> 
          <include>**/*IntegrationTestSuite.java</include>
        </includes>
      </configuration>
    </plugin>
    

    更新(5/31/2017): @johnstosh 为了指出这一点,自从我提出这个答案以来,肯定火已经进化了一点。这里有一个链接到他们的 documentation 以及更新的代码示例(arg行仍然是这个问题的重要部分):

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20</version>
        <configuration>
            <forkCount>3</forkCount>
            <reuseForks>true</reuseForks>
            <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
            <systemPropertyVariables>
                <databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
            </systemPropertyVariables>
            <workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
        </configuration>
      </plugin>
    
        3
  •  21
  •   corsiKa    16 年前

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

    • set MAVEN\u OPTS=-Xmx512m将给它512Mb的堆
    • set MAVEN\u OPTS=-Xmx2048m将为它提供2Gb的堆
        4
  •  9
  •   Willi Mentzel user670265    9 年前

    而不是 JAVA_OPTS MAVEN_OPTS ,请改用\u JAVA\u选项。真管用!

        5
  •  3
  •   kent_e    13 年前

    在尝试使用MAVENèOPTS变量时,我遇到了这个问题 site 对我有用。所以我所要做的就是将-Xms128m-Xmx1024m添加到默认的VM选项中,它就工作了。

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

        6
  •  0
  •   arghtype Castaldi    11 年前

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

    值为: -Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled

    数字可以不同,使他们相对于你的内存大小。

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

        7
  •  0
  •   ROMANIA_engineer Alexey    11 年前

    成功了-

    默认VM参数=-Xms128m-Xmx1024m

        8
  •  -7
  •   Phil    16 年前

    您正在寻找两个选项 java

    • -Xmx公司 最大堆大小
    • -Xms公司 起始堆大小

    java 可执行文件,如下所示:

    java -Xms512M -Xmx1024M my.package.MainClass
    

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

    对于每天的项目,做你认为足够好的事情。个人资料寻求帮助。

    推荐文章