在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中的maxmem
configuration仅适用于将编译器插件设置为将javac
分叉到新的JVM中的情况。 否则,插件会像Maven一样运行在同一个虚拟机中,因此在通过MAVEN_OPTS
传递到命令行的MAVEN_OPTS
。
在Windows 7下设置MAVEN_OPTS:
- 右键单击我的电脑,然后select属性 (键盘快捷键按Windows + 暂停/断开 )
- 单击系统属性左侧导航中的高级系统设置链接以显示高级系统属性
- 转到“ 高级”选项卡, 然后单击位于“ 高级系统属性”configuration窗口底部的“ 环境variables”button
- 创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_OPTS
和MAVEN_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
请记住,根据应用程序的不同,您可能希望启动堆大小和最大堆大小相同,因为它避免了在运行时调整堆的大小(在需要响应的应用程序中可能需要花费大量时间)。 调整堆的大小可能需要移动大量的物体并重新记帐。
对于每天的项目,无论你认为足够好,都可以做出来。 个人资料的帮助。