Cómo utilizar el analizador de memoria de eclipse
Cómo utilizar el analizador de memoria eclipse:
El analizador de memoria Eclipse es una herramienta de análisis de archivos de volcado de montón de Java que le ayuda a encontrar vulnerabilidades de memoria y reducir el consumo de memoria.
Descripción general
Para aplicaciones JAVA grandes, incluso las pruebas más complejas son difíciles de tapar todas las lagunas. Incluso si hacemos mucho trabajo productivo durante la fase de prueba, surgirán muchos problemas. aún estarán expuestos en el entorno de producción y serán difíciles de reproducir en el entorno de prueba. La JVM puede registrar parte del estado del sistema cuando ocurrió el problema y almacenarlo en un volcado de montón (analizador de memoria Heapse). La JVM puede registrar parte del estado del sistema cuando ocurre el problema y almacenarlo en un archivo de volcado del montón, lo que proporciona una base importante para analizar y diagnosticar problemas.
Por lo general, el análisis de pérdidas de memoria se considera una tarea difícil y generalmente lo realizan miembros superiores del equipo. Sin embargo, el MAT (Eclipse Memory Analyzer) que vamos a presentar hoy se considera una herramienta de análisis de archivos de volcado de montón "tonto" que le permite generar informes de análisis profesionales con solo unos pocos clics del mouse. En comparación con otras herramientas de análisis de pérdida de memoria, MAT es muy fácil de usar, básicamente con un clic, e incluso los usuarios novatos pueden comenzar rápidamente.
MAT es muy simple y fácil de usar. ¿Realmente quieres experimentarlo? Entonces, el primer paso es instalar MAT.
Instalación
Hay dos pasos principales en la instalación: el complemento eclipse y la versión del software.
1. La instalación del complemento eclipse es muy simple. Haga clic en Ayuda---Instalar nuevo software------agregar y luego agregue una nueva dirección con la ruta: .ibm. oti.vm.BootstrapClassLoader es responsable de cargar este objeto. Esta es una descripción muy breve, pero creo que ya puedes encontrar muchas pistas en ella, como qué clase ocupa la mayor parte de la memoria, a qué componente pertenece, etc.
A continuación, debemos analizar más a fondo por qué un vector ocupa el 99% de la memoria del sistema y quién impide que el mecanismo de recolección de basura la recupere.
Ver informe n.º 2: Análisis del problema
Primero, revisemos brevemente el mecanismo de reciclaje de memoria de JAVA. El trabajo de reciclar basura del espacio de memoria lo completa el recolector de basura (GC). La idea básica es identificar los objetos en el espacio del montón (es decir, el espacio de memoria disponible para la máquina virtual) y llamarlo "almacenado". se hace referencia al objeto. Si se hace referencia al objeto, se denomina objeto "vivo"; por el contrario, si ya no se hace referencia al objeto, se denomina objeto "basura" y el espacio que ocupa se puede recuperar para reasignarlo.
Hay un conjunto de elementos en el mecanismo de recolección de basura llamado conjunto raíz, que es un conjunto de objetos a los que la máquina virtual hace referencia directamente, como objetos que ejecutan subprocesos, objetos en la pila de llamadas del sistema y objetos utilizados por el cargador de clases del sistema. Cada objeto en el espacio del montón se llama jerárquicamente comenzando desde el elemento raíz. Por lo tanto, un objeto al que todavía hace referencia un elemento raíz activo se considera activo y no se puede reciclar para liberar memoria. Por lo tanto, podemos analizar la razón por la cual el objeto no se puede reciclar con éxito analizando la ruta de referencia desde el objeto hasta el elemento raíz. Si decimos que ninguna lógica del programa ya necesita un objeto, pero todavía hay una referencia al elemento raíz, entonces podemos decir que hay una pérdida de memoria aquí.
Ahora, vayamos al punto de encontrar pérdidas de memoria y hagamos clic en el enlace "Detalles" para ver el análisis detallado del objeto sospechoso 1, como se muestra en la Figura 8.
Figura 8. Análisis detallado del objeto sospechoso 1
Echemos un vistazo a la ruta más corta desde el elemento raíz del GC hasta el punto de reunión del consumo de memoria:
Figura 9 . El camino más corto desde el elemento raíz hasta el punto de reunión del consumo de memoria.
Podemos ver toda la cadena de referencia muy claramente. El punto de reunión de memoria es una colección de una gran cantidad de objetos. Si está familiarizado con el código, creo que esta información debería brindarle algunas ideas para encontrar pérdidas de memoria.
A continuación, echemos un vistazo a lo que se almacena en esta colección de objetos y por qué consume tanta memoria.
Figura 10. Información resumen del consumo de memoria del objeto
En esta figura podemos ver claramente que la colección de objetos almacena una gran cantidad de referencias al objeto Persona, que es lo que provoca la memoria La causa de la fuga.