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

在构build项目期间,我收到了这条消息

java.lang.OutOfMemoryError:Java堆空间

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

要设置的环境variables是MAVEN_OPTS ,例如MAVEN_OPTS=-Xmx1024m 。 pom中的maxmemconfiguration仅适用于将编译器插件设置为将javac分叉到新的JVM中的情况。 否则,插件会像Maven一样运行在同一个虚拟机中,因此在通过MAVEN_OPTS传递到命令行的MAVEN_OPTS

在Windows 7下设置MAVEN_OPTS:

  1. 右键单击我的电脑,然后select属性 (键盘快捷键按Windows + 暂停/断开
  2. 单击系统属性左侧导航中的高级系统设置链接以显示高级系统属性
  3. 转到“ 高级”选项卡, 然后单击位于“ 高级系统属性”configuration窗口底部的“ 环境variables”button
  4. 创build一个新的用户variables,将variables名称设置为MAVEN_OPTS并将variables值设置为-Xmx1024m (或更多)

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

如果您在运行JUnittesting(或失败保护)期间耗尽了堆空间,则更改MAVEN_OPTS可能无法帮助您。 我一直试图在MAVEN_OPTS不同的configuration没有运气,直到我发现这个post解决了问题。

基本上JUnits分离到自己的环境,并忽略MAVEN_OPTS中的设置。 您需要在您的pom中configurationsurefire以为JUnit添加更多的内存。

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


编辑:从Keith Chapman的博客复制解决scheme,以防万一链接中断:

 <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指出这一点 – 自从我把这个答案放在那里之后, surefire已经发展了一些。 这是一个链接到他们的文档和一个更新的代码示例(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> 

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

  • 设置MAVEN_OPTS = -Xmx512m会给它512Mb的堆
  • 设置MAVEN_OPTS = -Xmx2048m会给它2Gb的堆

在Mac上:而不是JAVA_OPTSMAVEN_OPTS ,而是使用_JAVA_OPTIONS。 这工作!

尝试使用MAVEN_OPTSvariables没有运气后,我遇到了这个网站 ,为我工作。 所以我所要做的只是添加-Xms128m -Xmx1024m到默认的虚拟机选项,它的工作。

要更改Eclipse中的那些,请转至窗口 – >首选项 – > Java – >已安装的JRE。 select选中的JRE / JDK,然后点击编辑。

在Windows上:

添加一个环境variables(在系统和用户的variables,我有一些奇怪的问题,它从各个地方得到的变种,所以我把它们添加到他们两个)。

将其命名为MAVEN_OPTS。

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

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

我有这个问题,这固定它,没有别的!

它的工作 – 要在Eclipse中进行更改,请转到窗口 – >首选项 – > Java – >已安装的JRE。 select选中的JRE / JDK,然后点击编辑。

默认虚拟机参数= -Xms128m -Xmx1024m

您正在寻找2个选项到java

  • -Xmx 最大堆大小
  • -Xms 开始堆大小

把它们放在你的命令行中调用java可执行文件,如下所示:

 java -Xms512M -Xmx1024M my.package.MainClass 

请记住,根据应用程序的不同,您可能希望启动堆大小和最大堆大小相同,因为它避免了在运行时调整堆的大小(在需要响应的应用程序中可能需要花费大量时间)。 调整堆的大小可能需要移动大量的物体并重新记帐。

对于每天的项目,无论你认为足够好,都可以做出来。 个人资料的帮助。