Pregunta

Tengo la aplicación Enterprise con EJB3 y JSF en el servidor Glassfish. Después de ejecutar esta aplicación durante más de 2 semanas, me di cuenta de que tengo problemas con la carga de clases. No creo que esto sea un problema con permgen. Las clases se cargan cada vez que abro una página, pero nunca se borran de la memoria. Aquí está la instantánea de la memoria de mi servidor:

Instantánea

Entonces, solo necesito algunos consejos sobre cómo puedo depurar este problema.

¿Fue útil?

Solución

Hay una buena explicación de por qué sucede este tipo de cosas, y más cuenta reciente de un problema similar aquí .

Usar jhat podría ayudar a descubra qué clases están ocupando la memoria y luego busque una referencia estática que pueda contenerlas o el cargador de clases, evitando la descarga adecuada.

Otros consejos

No parece que esté recargando su aplicación, lo cual sería la respuesta obvia. Realmente quieres saber cuáles son esas clases.

Reflection y XSLT [C] son ??objetivos obvios para crear clases, pero esto parece increíblemente regular. Presumiblemente, hay algún caché basado en el tiempo en algún lugar que está goteando de alguna manera.

Esto podría ser un problema con su marco web JSF (MyFaces, ICEFaces, etc.), si está utilizando uno. Especialmente dado el hecho de que no está volviendo a implementar la aplicación, pero esto sucede cuando las páginas se abren / cierran. Le sugiero que verifique el rastreador de problemas apropiado, antes de realizar más depuración y creación de perfiles.

Además, puede intentar implementar la aplicación en su máquina local, con un espacio de almacenamiento dinámico intencionalmente bajo, e intentar reproducir la pérdida de memoria de forma coherente navegando solo por las páginas web de la aplicación. Con suerte, podrá darse cuenta exactamente de qué tipo de acción resulta en la carga de nuevas clases.

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