Maven throws "java.lang.OutOfMemoryError"
Asked Answered
D

9

37

I'm compiling an open source project with "mvn install" but ended up with java.lang.OutOfMemoryError: Java heap space. I tried to execute java -Xmx256m but the output was java synopsis which indicated it's an invalid command.

I'm using jdk1.5.0_08, any ideas why this is happening?

Thanks,

Desertion answered 17/12, 2009 at 7:30 Comment(1)
It's open question ;) The answer might be MAVEN_OPTS="-Xmx513m" etc. ;)Kowal
M
55

Set the environment variable:

MAVEN_OPTS="-Xmx512m"
Michelinamicheline answered 17/12, 2009 at 7:32 Comment(3)
Sometimes is good also to extend perm memory size - MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"Kowal
Setting MAVEN_OPTS alone is not sufficient if the build fails while running unit tests. In such cases, you may have to configure the "argLine" of maven-surefire-plugin explicitly.Showiness
I was getting this error on mvn install, using "mvn install -DMAVEN_OPTS=-Xmx1024m" solved my problem!Sibell
C
19

It depends on which JVM instance require more memory. As example, if tests are forked (by default), and fails due OutOfMemoryError then try configure plugin which launching them:

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <argLine>-Xmx1024m</argLine>
            </configuration>
        </plugin>
Cowhide answered 18/12, 2009 at 8:46 Comment(2)
Can I add Xmx1024m -Xms1024m as well?Latisha
Yep, <argLine>-Xmx1g -Xms1g</argLine> should workCowhide
F
9

Not only heap memory. You have to increase perm size also to resolve that exception in maven use these variables in environment variable.

variable name: MAVEN_OPTS
variable value: -Xmx512m -XX:MaxPermSize=256m

Frictional answered 19/1, 2012 at 5:48 Comment(3)
How can you get the current value of Xmx and MaxPermSize? After all, I can't increase the values without knowing what they're already set to.Stotts
I'm not sure of MaxPermSize, but Xmx is usually 1/4th of the physical memory. Again, this may vary depending on the JRE implementations and/or "server", "client" mode of JVM.Showiness
-bash: export: `-XX:MaxPermSize=256m': not a valid identifierExponential
T
6

Sometimes, if you use other programs inside maven, like in integration tests or Surefire, the MAVEN_OPTS is not enough. Apart from MAVEN_OPTS, try to use JAVA_TOOL_OPTIONS. This did the trick for me in Maven when running some integration tests:

export JAVA_TOOL_OPTIONS="-Xmx2048m -XX:MaxPermSize=1024m -Xms2048m"

Reference: osx maven running tests Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

Triazine answered 2/8, 2016 at 10:19 Comment(0)
N
1

on a Unix-like system:

export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m"

OutOfMemoryError

Nephrolith answered 2/3, 2017 at 11:34 Comment(0)
P
0

Alternatively use set MAVEN_OPTS="-XX:MaxPermSize=256m" while running from command prompt.

Phenomenology answered 25/11, 2015 at 10:25 Comment(0)
A
0

I always use this with my shell on ubuntu:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m"
Autolithography answered 11/1, 2017 at 16:50 Comment(0)
M
-1

Try to change or update your Maven install. I had this problem but I solved it by upgrading Maven (3.0.5 to 3.3.3).

Maddiemadding answered 10/3, 2016 at 12:49 Comment(0)
D
-5

I experienced the same problem. According to this link it might help to change jvm implementation - this can be done by setting JAVA_HOME system variable.

Try for example in the link mentioned ibm jvm or oracle jrockit:

SET JAVA_HOME=C:\bea10\jrockit160_22
mvn install
Decant answered 5/4, 2011 at 14:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.