Red de conocimiento informático - Conocimiento del nombre de dominio - Uso de la herramienta de optimización del rendimiento-MAT

Uso de la herramienta de optimización del rendimiento-MAT

Recientemente, escribí algunos artículos sobre optimización del rendimiento, incluido "Análisis completo de la optimización del consumo de energía de Android", "Análisis completo de la optimización del rendimiento de Android", "Análisis de la optimización de la representación de Android" y "Análisis de la optimización de la computación de Android". Hay muchas herramientas de optimización del rendimiento mencionadas en el artículo, pero dado que el artículo se centra en cómo analizar las discusiones relacionadas con el rendimiento, simplemente se omite la mayor parte de la introducción al uso de las herramientas. La siguiente es una breve introducción al uso de la herramienta de optimización del rendimiento MAT (Memory Analyzer Tool), en el siguiente orden:

El nombre completo de la herramienta MAT es Memory Analyzer Tool, que es una herramienta para Análisis detallado de la memoria dinámica de Java. Esta herramienta es muy poderosa. Para utilizar esta herramienta, necesitamos el archivo hprof. Sin embargo, MAT no puede utilizar este archivo directamente y debe convertirse en un solo paso. Puede utilizar el comando hprof-conv para convertir, pero Android Studio puede convertir directamente. El método de conversión es el siguiente:

1. Seleccione un archivo hprof, haga clic derecho y seleccione "Exportar a estándar". opción hprof.

2. Complete el nombre del archivo modificado y la ruta.

Después de hacer clic en el botón Aceptar, se generarán los archivos requeridos por la herramienta MAT.

Usemos MAT para abrir el archivo doctorq.hprof convertido:

1. Abra MAT, seleccione Archivo -> abra el archivo y seleccione el archivo doctorq.hprof que acabamos de generar. .

2. Después de seleccionar este archivo, MAT tendrá unos segundos para analizar el archivo. Algunos archivos hprof pueden ser demasiado grandes, por lo que el tiempo de análisis será mayor. Después del análisis, la interfaz que se nos presenta es la siguiente:

Esta es una interfaz general y se darán algunas conclusiones preliminares después del análisis.

La primera página de esta vista resumirá cuánta memoria está ocupando actualmente el volcado del montón, incluyendo cuántas clases y objetos están involucrados, así como el cargador de clases. Si hay objetos reciclados, habrá una conexión y se podrá hacer referencia a ellos directamente (histograma de objetos inalcanzables en la figura).

Por ejemplo, en este ejemplo, el volcado del montón ocupa 41 M de memoria, 5400 clases, 96700 objetos, 6 cargadores de clases y luego habrá diversa información de clasificación.

Se enumerarán los valores con los valores de tamaño reservado más grandes. Puede pasar el cursor sobre las hojas del gráfico circular y ver los detalles a la derecha:

Las áreas grises del gráfico no son lo que debemos preocuparnos. Es un objeto distinto de los objetos de memoria grandes. Lo que debemos preocuparnos es el área de color de la imagen, como los 2,4 millones de objetos de la imagen. Veamos qué es.

El objeto es un objeto de mapa de bits. Si desea saber qué imagen es este objeto, puede utilizar la herramienta gimp para buscar este objeto.

La vista de histograma ve principalmente el número de instancias de una clase. Por ejemplo, cuando comprobamos si hay pérdidas de memoria, podemos determinar si los objetos se crean con frecuencia, de modo que podamos observar la cantidad de objetos. También puede ver los objetos que consumen mucha memoria clasificándolos:

De forma predeterminada, se muestra como un nombre de clase. También puede elegir diferentes modos de visualización, como se muestra a continuación:

Demostremos:

Esta vista enumerará todos los objetos de instancia como un porcentaje de la memoria total. Tenga en cuenta que este lugar es un objeto más que una clase. Esta vista se utiliza para buscar objetos de memoria grandes. Estos objetos se pueden expandir para ver información más detallada y puede ver los objetos contenidos dentro del objeto:

Esta vista mostrará algunos posibles puntos de pérdida de memoria. Por ejemplo, la imagen de arriba muestra tres presuntas pérdidas de memoria. Tomemos al sospechoso 1 como ejemplo para entender el informe. Primero, echemos un vistazo a los detalles de los puntos sospechosos:

La información anterior muestra que la instancia 0xa50819f8 de la clase ImageCache ocupa el 14,19% de la memoria y el valor específico es 5147200 bytes (5147200/ 1024/1024).

De esta forma, podemos encontrar lugares sospechosos en el código fuente de nuestra aplicación que dan lugar a filtraciones, y además es sencillo localizar el problema.