La causa del error PermGen OutOfMemory es la nueva implementación de la aplicación. La causa subyacente son los objetos de clase filtrados en PermGen de las redespliegues.
Por supuesto, la solución es reiniciar la JVM después de un cierto número de redespliegues.
Este es un problema muy difícil de resolver por completo, aunque con un poco de investigación a menudo puede hacer grandes mejoras. Aquí es donde comienza: cuando su aplicación web se detiene, asegúrese de que:
- todos los hilos que comenzaste se detienen
- todos los ThreadPools que comenzaste se cierran
- se liberan todas las referencias estáticas que puede liberar
Estas son algunas de las cosas que pueden hacer que un objeto Class quede atrapado en PermGen.
Además, tenga en cuenta que no todas las JVM (o todas las versiones de JVM) tendrán objetos de clase GC en PermGen. Si está ejecutando una JVM o una versión de una JVM que no será un objeto de clase GC en PermGen, entonces su única opción es reiniciar la JVM después de un cierto número de redespliegues. Esto probablemente no se aplica a usted, teniendo en cuenta las opciones de JVM que mencionas.