java.lang.OutOfMemoryError: PermGen space
Problem :
We come across this common exception when starting STS Eclipse or trying to compile java classes through maven command.
Exception I Encountered Was :
###################################################################################################################
[ERROR] PermGen space -> [Help 1] java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 1) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(Cl assRealm.java:389) at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass( SelfFirstStrategy.java:42) at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadCl ass(ClassRealm.java:259) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm .java:242) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm .java:227) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 1) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(Cl assRealm.java:389) at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass( SelfFirstStrategy.java:42) at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadCl ass(ClassRealm.java:259) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm .java:242) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm .java:227) at org.apache.maven.plugin.jar.AbstractJarMojo.createArchive(AbstractJar Mojo.java:202) at org.apache.maven.plugin.jar.AbstractJarMojo.execute(AbstractJarMojo.j ava:255) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default BuildPluginManager.java:106) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor .java:208) [ERROR] [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please rea d the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryErr or###################################################################################################################
Solution :
This exception was caused when i was starting the Eclipse for the very first time and also while i was using the mvn compile command to compile the java classes. To resolve this exception i increased the memory size in command prompt before restarting eclipse and increasing the memory in maven options. See below for the examples.
Example :
- Follow the above steps outlined and you should be able to resolve it : 1)Add this to command line JVM before starting tomcat server : -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled 2)For Maven options use this : set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m This should resolve the above exceptions.
Similar Exception :
- java.lang.OutOfMemoryError: PermGen space