In Java application, PermGem memory is very important, it is used to compile and optimize classes.

You might also face this issue during deployment application in tomcat, in my case, I faced it with Tomcat 6 and 7 with message of:

<code>java.lang.OutOfMemoryError: PermGen space</code>

Solutions

Increasing the PermGem memory in “catalina.bat” for windows or “catalina.sh” by passing the parameters to JAVA_OPT as following (in Windows):

set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx512m 
set JAVA_OPTS=%JAVA_OPTS% -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC

rem ----- Execute The Requested Command ---------------------------------------
<code>java.lang.OutOfMemoryError: PermGen space</code>

Above, I set:

  • Min/Max JVM memory allocation: -Xms512m -Xmx512m
  • Min/Max PermGen size allocation: -XX:PermSize=256m -XX:MaxPermSize=256m

Tips & Warning

  • You need to adapt the memory according to your real physical memory, (eg. my laptop has 3GB RAM) and your application resources needed. PermGem size 256MB would be enough
  • If you are starting the tomcat via Eclipse, above settings might not apply, you need to set it instead in Eclipse
    • Ex: Eclipse 3.7, Windows –> Preferences –> Tomcat –> JVM Settings
    • At box of “Append to JVM Parameters”, add above value here