Pregunta

Cada 15-30 minutos Netbeans muestra un "java.lang.OutOfMemoryError: PermGen space".Por lo que aprendí de Google, esto parece estar relacionado con pérdidas del cargador de clases o pérdidas de memoria en general.

Lamentablemente, todas las sugerencias que encontré estaban relacionadas con servidores de aplicaciones y no tengo idea de cómo adaptarlas a Netbeans.(Ni siquiera estoy seguro de que sea el mismo problema)

¿Es un problema en mi aplicación?¿Cómo puedo encontrar la fuente?

¿Fue útil?

Solución

Es debido a la carga constante de clases.

Java almacena el código de bytes de clase y todas las constantes (p. ej.constantes de cadena) en un montón permanente que no se recolecta basura de forma predeterminada (lo que tiene sentido en la mayoría de las situaciones porque las clases se cargan solo una vez durante la vida útil de una aplicación).

En aplicaciones que suelen cargar clases durante toda su vida que son:

  • servidores web y de aplicaciones durante la redistribución en caliente;
  • IDE cuando ejecuta aplicaciones desarrolladas (cada vez que presiona el botón Ejecutar en Netbeans o eclipse, se cargan las clases de su aplicación como nuevas);
  • etc Este comportamiento es inadecuado porque un montón se llena con el tiempo.

Debe activar la recolección permanente de basura en el montón para evitar este error.

yo uso opciones

-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled

(evitó que mi eclipse 3.4 lanzara "java.lang.OutOfMemoryError: PermGen space"por lo que también debería funcionar con netbeans).

Editar:Solo tenga en cuenta que para Netbeans configura esas opciones en:[Netbeans installation]\etc\netbeans.confDeberías anteponer esas opciones con -J y agregarlos en netbeans_default_options (ver comentarios en netbeans.conf para más información).

Otros consejos

Trate de añadir el siguiente argumento a netbeans netconf: -J-XX: MaxPermSize = 256m

vincular sobre cómo configurar el tamaño de PermSize. Lo más probable es que esto no es un problema de su código, por lo que la única solución sería aumentar la la PermSize. He encontrado que esto es muy a menudo, cuando se trabaja con JAXB. En general, si se utiliza muchas bibliotecas que ellos también dependen de muchos otros archivos jar, el tamaño predeterminado del espacio PermGen puede que no sea lo suficientemente grande.

Vea estas entradas de blog para más detalles: classloader fugas y cómo solucionar el temido "java.lang.OutOfMemoryError: espacio PermGen"

Si está desarrollando una aplicación web, tratar de poner en la opción VM Server

-Xmx512m -Xms512m -XX: MaxPermSize = 512m

Ir a Herramientas / Servidores // Plataforma / Opciones de VM (Netbeans 7.4)

Puede cambiar las opciones de inicio de NetBeans JVM mediante la edición del archivo /etc/netbeans.conf. A menudo tengo este tipo de errores cuando se desarrolla un Webapp y despliego a menudo. En ese caso, reiniciar Tomcat de vez en cuando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top