到今天为止,我的maven编译失败了。
[INFO] [ERROR] Unexpected
[INFO] java.lang.OutOfMemoryError: Java heap space
[INFO] at java.util.Arrays.copyOfRange(Arrays.java:2694)
[INFO] at java.lang.String.<init>(String.java:203)
[INFO] at java.lang.String.substring(String.java:1877)内存不足;若要增加内存量,请在启动时使用-Xmx标志(java -Xmx128M .)
到昨天为止,我已经成功地运行了一个maven编译。
从今天起,我的堆就堆到了3 GB的上。另外,我只修改了2-3行代码,所以我不理解这个“内存不足”错误。
vagrant@dev:/vagrant/workspace$ echo $MAVEN_OPTS
-Xms1024m -Xmx3000m -Dmaven.surefire.debug=-Xmx3000m编辑:通过更改失败模块的pom.xml,我尝试了海报的注释。但我也遇到了同样的maven构建错误。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<fork>true</fork>
<meminitial>1024m</meminitial>
<maxmem>2024m</maxmem>
</configuration>
</plugin>发布于 2012-09-22 12:56:51
你说的是什么样的“网络”模块?这是一个简单的战争和包装类型的战争?
如果您没有使用谷歌的网络工具包,那么您就不需要提供任何gwt.extraJvmArgs
分叉编译过程可能不是最好的主意,因为它启动了第二个完全忽略MAVEN_OPTS的进程,从而使分析变得更加困难。
因此,我会尝试通过设置MAVEN_OPTS来增加Xmx
export MAVEN_OPTS="-Xmx3000m"也不要将编译器发送到不同的进程
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>不应该增加-XX:MaxPermSize=512m,因为如果perm大小是问题的原因,那么我将期望错误java.lang.OutOfMemoryError: PermGen space
如果这不能解决您的问题,那么您可以通过添加-XX:+HeapDumpOnOutOfMemoryError来创建堆转储以供进一步分析。此外,您可以在编译运行时使用java bin目录中的jconsole.exe连接到jvm,并查看jvm堆中发生了什么。
另一个想法(可能是一个愚蠢的想法)出现在我这里,你的机器里有足够的内存吗?定义内存大小是很好的,但是如果您的主机只有4GB,那么您可能会遇到这样的问题: Java无法使用定义的内存,因为它已经被操作系统、Java、MS-Office使用.
发布于 2016-03-14 21:50:25
稍后回答时提到另一个选项,而不是传递给Maven的通用MAVEN_OPTS环境变量,以构建所需的JVM选项。
由于Maven 3.3.1,您可以将一个.mvn文件夹作为相关项目的一部分,并将一个jvm.config文件作为这样一个选项的最佳位置。
两个新的可选配置文件
.mvn/jvm.config和.mvn/maven.config,位于项目源代码树的基目录下。如果存在,这些文件将提供默认jvm和maven选项。因为这些文件是项目源树的一部分,所以它们将出现在所有项目签出中,并且在每次生成项目时都会自动使用。
作为官方发布说明的一部分
在Maven中,在每个项目基础上定义JVM配置并不简单。基于环境变量
MAVEN_OPTS和使用${user.home}/.mavenrc的现有机制是另一个选项,其缺点是不属于项目的一部分。 从这个版本开始,您可以通过${maven.projectBasedir}/.mvn/jvm.config文件定义JVM配置,这意味着您可以在每个项目基础上定义构建选项。此文件将成为您的项目的一部分,并将与您的项目一起签入。所以不再需要MAVEN_OPTS,.mavenrc文件了。因此,例如,如果将以下JVM选项放入${maven.projectBasedir}/.mvn/jvm.config文件中: -Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true
这种方法的主要优点是,配置与相关项目隔离,并应用于整个构建,对于在同一项目上工作的其他开发人员(忘记设置该配置)而言,该配置比MAVEN_OPTS更不脆弱。
此外,这些选项将适用于所有模块的情况下,一个多模块项目.
发布于 2015-01-19 06:06:22
我在使用Lowend512 to内存VPS和良好的CPU编译“清洁安装”时也遇到了同样的问题。重复运行OutOfMemory并杀死脚本。
我使用export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=350m"并工作。
由于这是我第一次需要Maven,所以仍然会出现其他编译失败,但是OutOfMemory问题已经解决。
https://stackoverflow.com/questions/12498738
复制相似问题