Tengo una pérdida de memoria de perm gen, eso lo sé. La creación de perfiles utilizando jvisualvm muestra que al realizar una implementación en caliente (por ejemplo, detener e iniciar una aplicación sin matar a la JVM, en tomcat, WebSphere, WebLogic, etc.), el espacio de PermGen aumenta constantemente.Clase de Java (PermGen) Pérdida de memoria (aplicaciones web) - ¿Solución genérica?
Después de leer, usando jhat y otras herramientas avanzadas me di cuenta de que probablemente tenga una referencia al WebAppClassLoader
de una clase en algún lugar de sus cargadores de clase primaria.
no podía precisarlo a pesar de que hice algunas consultas masivas basadas en JavaScript jhat
no hay una sencilla utilidad que se entera de quién es el responsable de que el cargador de clases a no ser recolector de basura (por lo tanto permitiendo la recolección de basura de clases cargadas por él)?
me trataron JProfiler, jvisualvm, jhat, y un montón de Google
a todos los amigos LMGTFY - He pasado alrededor de un día y medio de la lectura de foros con instrucciones paso a pasos, sin suerte. Estoy buscando una utilidad o código que emita:
El objeto X de la clase Y es la única raíz de GC que evita que se eliminen sus clases.
¿qué información le dio JProfiler? ¿Qué objetos quedan cuando llamas explícitamente al recolector de basura? – Bozho
y cómo estás haciendo un despliegue caliente (en tomcat)? – Bozho
@Bozho - usando Tomcat Manager, presionando detener/iniciar. Los objetos que quedan son WebAppClassLoader y todas sus clases cargadas. la búsqueda de raíz de GC más cercana no dio resultados prácticos. –