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,

1
  • 2
    It's open question ;) The answer might be MAVEN_OPTS="-Xmx513m" etc. ;) Commented Dec 17, 2009 at 11:37

9 Answers 9

55

Set the environment variable:

MAVEN_OPTS="-Xmx512m"
Sign up to request clarification or add additional context in comments.

3 Comments

Sometimes is good also to extend perm memory size - MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"
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.
I was getting this error on mvn install, using "mvn install -DMAVEN_OPTS=-Xmx1024m" solved my problem!
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>

2 Comments

Can I add Xmx1024m -Xms1024m as well?
Yep, <argLine>-Xmx1g -Xms1g</argLine> should work
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

3 Comments

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.
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.
-bash: export: `-XX:MaxPermSize=256m': not a valid identifier
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"

Comments

1

on a Unix-like system:

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

OutOfMemoryError

Comments

0

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

Comments

0

I always use this with my shell on ubuntu:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m"

Comments

-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).

Comments

-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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.