Maven 2 在Windows上的Maven 2下设置Java堆空间
我在我的项目构建过程中收到了这个消息 java.lang.OutOfMemoryError: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的两个选项
如何增加堆空间,我有8Gb或RAM maven不可能消耗那么多,我在linux上找到了这个方法,但我在Windows7上。如何在windows下更改java堆空间?它应该是相同的命令,除了SET而不是EXPORT之外
- set MAVEN_OPTS=-Xmx512m将为其提供512Mb的堆
- set MAVEN_OPTS=-Xmx2048m将为其提供2Gb的堆
- -最大堆大小
- -Xms起始堆大小
java
可执行文件的命令行调用中,如下所示:
java -Xms512M -Xmx1024M my.package.MainClass
请记住,根据应用程序的不同,您可能希望起始堆大小和最大堆大小相同,因为这样可以避免在运行时调整堆的大小(这可能会占用需要响应的应用程序的时间)。调整堆的大小可能需要移动大量对象并重新记账
对于每天的项目,做你认为足够好的事情。配置文件以获取帮助。要设置的环境变量是
MAVEN\u OPTS
,例如MAVEN\u OPTS=-Xmx1024m
。pom中的maxmem
配置仅在将编译器插件设置为forkjavac
到新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构建吗