Tuesday, May 13, 2014

Solution for java.lang.OutOfMemoryError: PermGen space error while building WSO2 Carbon

Problem - Building WSO2 carbon often ended up with the following error, if you haven't increase memory for Maven.

The system is out of resources.
Consult the following stack trace for details.
java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at org.codehaus.plexus.compiler.javac.IsolatedClassLoader.loadClass(IsolatedClassLoader.java:56)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at org.codehaus.plexus.compiler.javac.IsolatedClassLoader.loadClass(IsolatedClassLoader.java:56)
    at com.sun.tools.javac.main.JavaCompiler.(JavaCompiler.java:354)
    at com.sun.tools.javac.main.JavaCompiler.instance(JavaCompiler.java:88)
    at com.sun.tools.javac.main.Main.compile(Main.java:424)
    at com.sun.tools.javac.main.Main.compile(Main.java:353)
    at com.sun.tools.javac.main.Main.compile(Main.java:342)
    at com.sun.tools.javac.main.Main.compile(Main.java:333)
    at com.sun.tools.javac.Main.compile(Main.java:94)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:549)
 

Solution - Building WSO2 Carbon needs additional memory allocated to Maven. You can set it as below.

 

Step 1

Run the following command in your terminal to open .bashrc file, where you can set your environment variables.
 
sudo gedit ~/.bashrc

 

Step 2

Add the following line at the end of .bashrc file.
 
MAVEN_OPTS = "-Xms512m -Xmx1024m -XX:MaxPermSize=1024m"
export MAVEN_OPTS

Close the file.

 

Step 3

Reload/Restart the .bashrc file. Run the following command in terminal.
 
source ~/.bashrc

If you don't do this step, the effect will not be taken immediately . Maven will fail due to out of memory.

If you are still getting the same error, you need to increase the memory even more. Increase -XX:MaxPermSize=1024m parameter (like 2048m, 4096m etc.) in the Maven environment variable.


No comments:

Post a Comment