截至今天,我的 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>
您在谈论哪种“网络”模块?
是简单的战争,还是有包装式的战争?
如果您不使用 Google 的网络工具包 (GWT),则无需提供任何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
不应该是必需的,因为如果烫发大小是问题的原因,那么我预计会出现错误java.lang.OutOfMemoryError: PermGen space
如果这不能解决您的问题,那么您可以通过添加创建堆转储以供进一步分析-XX:+HeapDumpOnOutOfMemoryError
。此外,您可以在编译运行时使用 java bin 目录中的 jconsole.exe 连接到 jvm,并查看 jvm 堆内发生了什么。
我想到了另一个想法(可能是一个愚蠢的想法),你的机器内有足够的内存吗?定义内存大小很好,但是如果您的主机只有 4GB,那么您可能会遇到 Java 无法使用定义的内存的问题,因为它已经被操作系统、Java、MS-Office 使用......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)