Articulo original.
Un error algo común en servidores de aplicaciones Java (Tomcat, Jboss) es este mensaje: “java.lang.OutOfMemoryError: PermGen space”.
La mayoría de las herramientas de debugging no son capaces de detectar este problema.

Para entender este mensaje de error y solucionarlo, tenemos que recordar que, para optimizar la eficiente recolección de basura de Java se gestiona en las generaciones  de segmentos de memoria que contengan objetos de diferentes ciclo de vida y generan una pila de basura.

Sun/Oracle JVM permite cambiar el tamaño de las diferentes generaciones de la pila, incluyendo la generación permanente. En una JVM de Sun (1.3.1 y superiores) se puede configurar el tamaño inicial de la generación permanente (PermGen) y el tamaño máximo del PermGen.

Para definir un nuevo tamaño inicial de la JVM de Sun utilizar  -XX:PermSize=64m  al iniciar la máquina virtual (como argumento).
Para establecer el máximo tamaño de generación utilizar –XX:MaxPermSize=128m.
Los valores predeterminados difieren entre versiones diferentes, pero en JVM de Sun/Oracle el límite superior es generalmente de 64 MB.

Algunos de los valores por defecto de Sun JVM se enumeran a continuación:

JDK 1.3.1_06 Initial Size Maximum Size
Client JVM 1MB 32MB
Server JVM 1MB 64MB
JDK 1.4.1_01 Initial Size Maximum Size
Client JVM 4MB 64MB
Server JVM 4MB 64MB
JDK 1.4.2 Initial Size Maximum Size
Client JVM 4MB 64MB
Server JVM 16MB 64MB
JDK 1.5.0 Initial Size Maximum Size
Client JVM 8MB 64MB
Server JVM 16MB 64MB
Anuncios