increase - java lang outofmemoryerror thrown from the uncaughtexceptionhandler in thread
Error de espacio PermGen-Servidor Glassfish (4)
Esta es la pérdida de memoria del cargador de clase. Cada vez que se vuelve a implementar la aplicación, se crea un nuevo cargador de clases para ella y se cargan de nuevo todas las clases de su aplicación. Esto consume memoria en el espacio perm gen.
El antiguo cargador de clases y todas sus clases cargadas tienen que ser recolectadas como basura, de lo contrario, eventualmente se encontrará con un espacio PermGen OOME después de implementarlo varias veces. Esto no funciona si un objeto cargado por un cargador de clases externo contiene una referencia a cualquier objeto cargado por el cargador de clases antiguo. Este artículo da una buena explicación del problema.
En general, las fugas del cargador de clase son difíciles de analizar y, a veces, difíciles de corregir. Para descubrir por qué los antiguos cargadores de clases no son recolectados en la basura, tienes que usar un generador de perfiles. En JProfiler , use el andador de pila, seleccione los objetos del cargador de clase glassfish y use la vista de referencias entrantes para verificar las rutas a las raíces del recolector de basura.
La clase del cargador de clases se llama org.apache.servlet.jasper.JasperLoader
. Aquí hay una captura de pantalla de una situación normal, donde el cargador de clases solo está en manos de instancias vivas de objetos cargados.
En su situación, debería ver referencias de objetos externos. Otra causa común de una fuga del cargador de clases en los contenedores web es un subproceso en segundo plano que no se detiene. Google Guice, por ejemplo, tiene un error en 3.0.
(Descargo de responsabilidad: mi empresa desarrolla JProfiler)
Estoy ejecutando la aplicación web java utilizando Hibernate y glassfish Server. estoy obteniendo
java.lang.OutOfMemoryError: PermGen space
Excepción de java.lang.OutOfMemoryError: PermGen space
cuando después de implementarlo varias veces.
Intenté -XX:MaxPermSize=128M
en mis variables de entorno, pero no funciona.
Este problema ocurre con el despliegue iterativo muchas veces. He enfrentado esto muchas veces. Por favor, consulte el siguiente enlace de JIRA para error de Glassfish:
Para resolver este problema (en sistema operativo basado en Linux) haz lo siguiente
1) aumentar la memoria (para que este problema no sea frecuente) configurando "domain.xml" en
/ glassfish / domain / domain1 / config
buscar
<jvm-options>-XX:MaxPermSize=
set it to higher value eg- 198m or 256m
2) elimine el proceso de glassfish para liberar el puerto en el que se estaba ejecutando ( en mi caso era 8686 ) terminal abierto (en sistema operativo basado en Linux) y escriba -
sudo netstat -npl | grep 8686
esto resultará en algo como ...
tcp6 0 0 :::8686 :::* LISTEN 3452/java
siguiente uso
kill -9 3452
para matar ese proceso (3452 en este caso)
Ahora intenta iniciar glassfish, debería comenzar.
Si está utilizando Windows, intente matar el proceso de glassfish (java.exe * 32) con el Administrador de tareas y luego reinicie el servidor.