Java项目打包时HeapSpace OOM

Java项目打包时HeapSpace OOM

maven 打包时HeapSpace OOM

maven打包时出现HeapSpace OOM问题。由于Maven是Java启动的,显然我们只要修改maven进程的JVM配置就可以了。

在系统的环境变量中,设置MAVEN_OPTS,用以存放JVM的参数:

1
export MAVEN_OPTS=-Xms256m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256M

除了Maven主进程之外,单测插件surefire起的进程也可能出现OOM异常。surefire插件可以拉出几个JVM进程,以及每个进程的JVM配置是如何的,都是可以配置的(见官方文档)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!--注意argLine配置可以用于传递JVM参数-->
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</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>
[...]
</plugins>

gradle 打包时HeapSpace OOM

在gradle工程的gradle.properties里配置org.gradle.jvmargs=-Xmx2000m -Xms500M -XX:+HeapDumpOnOutOfMemoryError