Estoy usando el MAT para comparar dos vuelcos del montón. He estado tomando un basurero cada día y está creciendo en unos 200 megas cada día. Creo que la fuga está asociada con java.util.zip debido a lo que muestra la tabla y también porque recientemente agregamos un nuevo proceso que comprime y descomprime una gran cantidad de archivos. (Véase la imagen)Necesito ayuda para encontrar mi pérdida de memoria usando MAT
En este punto que abra el dominador y se filtró para. Inflater. Eso produjo una gran lista de java.util.zip.Inflater. Ahora quiero ver qué es lo que los mantiene abiertos, así que elegí uno y ejecuté la ruta de acceso a la raíz de la GC, excluyendo las referencias débiles y débiles (ver imagen).
Parece que esto tiene que ver con la inflación frasco y nada que ver con mi proceso. En este punto estoy atascado y necesito algunas sugerencias.
EDIT 1
Sean le preguntó sobre el ThreadLocals. Si miras el dominator_tree sin filtro, ves que java.lang.ApplicationShutdownHooks es el 58% del montón. Si amplío algunas de esas entradas, puede ver que parecen estar en ThreadLocalMap. ¿Cómo encontraría lo que los puso allí?
EDIT 2
comentario de Sean me puso sobre la pista correcta. Estoy usando Glassfish v 2.0 y tiene un memory leak. Crea continuamente nuevos LogManagers y los agrega a la colección ApplicationShutdownHooks.
He solucionado el problema abriendo el ApplicationShutdownHooks y eliminando manualmente los objetos de la colección.
¿Todas las rutas de las instancias a la raíz de la GC se ven así? Podría ser que esta no es una muestra representativa. –
Hay 16k instancias por lo que es posible que algunas sean diferentes. He visto algunos y son iguales. ¿Alguien sabe por qué mis imágenes no se muestran? – Preston
Están mostrando bien para mí. –