java jboss out-of-memory permgen

java - PermGen sin memoria



jboss out-of-memory (2)

Constantemente detecto OOM en PermGen para mi entorno:

  1. java 6
  2. jboss-4.2.3
  3. No es una gran aplicación web

Conozco el problema de String.intern (), pero no tengo suficiente uso valioso de él. El aumento del tamaño de MaxPermGen no tomó fuerza (de 128 Mb a 256 Mb).

¿Qué otras razones podrían invocar a OOM para PermGen? ¿Qué escenario de investigación es el mejor en tal situación (estrategia, herramientas, etc.)?

Gracias por cualquier ayuda


Ver esta nota

  • Coloque el controlador JDBC en common / lib (como dice la documentación de tomcat) y no en WEB-INF / lib
  • No ponga el registro de commons en WEB-INF / lib ya que tomcat ya lo inicia

los nuevos objetos de clase se colocan en el PermGen y ocupan así una cantidad de espacio cada vez mayor. Independientemente de cuán grande sea el espacio PermGen, inevitablemente se completará después de suficientes implementaciones. Lo que debe hacer es tomar medidas para lavar el PermGen para que pueda estabilizar su tamaño. Hay dos indicadores JVM que manejan esta limpieza:

-XX:+CMSPermGenSweepingEnabled

Esta configuración incluye PermGen en una ejecución de recolección de basura. Por defecto, el espacio PermGen nunca se incluye en la recolección de basura (y por lo tanto crece sin límites).

-XX:+CMSClassUnloadingEnabled

Esta configuración le dice al barrido de recolección de basura PermGen que tome medidas en los objetos de la clase. Por defecto, los objetos de la clase obtienen una exención, incluso cuando se visita el espacio PermGen durante una colección de garabage.


Por lo general, se produce este error cuando se vuelve a implementar una aplicación al tener una pérdida de cargador de clases , porque significa que todas las clases se vuelven a cargar mientras las versiones antiguas permanecen.

Hay dos soluciones:

  • Reinicie el servidor de aplicaciones en lugar de volver a implementar la aplicación, fácil pero molesto
  • Investigue y solucione la fuga usando un generador de perfiles. Desafortunadamente, las fugas del cargador de clases pueden ser muy difíciles de precisar.