tutorial android bitmap memory-dump hprof eclipse-memory-analyzer

android - tutorial - MAT(Eclipse Memory Analyzer)-cómo ver mapas de bits desde el volcado de memoria



eclipse memory analyzer tutorial (2)

He encontrado una manera de ver tales mapas de bits:

  • Primero, necesitas descargar e instalar GIMP
  • A continuación, encuentre su objeto Bitmap en MAT, haga clic con el botón derecho en el campo mBuffer , en el menú emergente, elija "Copiar" -> "Guardar valor en archivo" y guarde el valor de esta matriz en algún archivo
  • Dar extensión .data a ese archivo
  • inicie GIMP, seleccione "Archivo" -> "Abrir" , seleccione su archivo .data y haga clic en el botón Abrir
  • Aparecerá el cuadro de diálogo "Cargar imagen de datos sin procesar" . Aquí necesitas configurar los parámetros correctos para tu bitmap
  • Primero, elija "Tipo de imagen" como "Alfa RGB" (la mayoría de los recursos de Android tienen este tipo de imagen, pero es posible que tenga que experimentar con otros tipos de imágenes)
  • segundo, establezca el ancho y alto correctos para su mapa de bits (las dimensiones correctas se pueden encontrar en el volcado de memoria)

En ese momento ya debe observar la vista previa de la imagen original. Si no lo hizo, puede intentar cambiar algunos otros parámetros en el cuadro de diálogo "Cargar imagen de datos sin procesar" .

NOTA: para obtener un ancho y alto de imagen, puede mirar los campos de ancho de ancho y mHeight en MAT en la sección de atributos como se muestra en la imagen en cuestión.

Estoy analizando el uso de la memoria de mi aplicación de Android con la ayuda de Eclipse Memory Analyzer (también conocido como MAT). A veces puedo encontrar instancias extrañas de la clase android.graphics.Bitmap , utilizando gran parte del montón. El problema es que no puedo encontrar el origen de estos mapas de bits, ningún nombre de archivo , ningún ID de recurso , nada. Toda la información que puedo encontrar para bitmap es la siguiente:

Hay un campo mBuffer con una matriz de píxeles de imagen, supongo. Pero está en algún formato interno de Android, no PNG.

Pregunta : ¿Cómo puedo ver la imagen representada por este mapa de bits desde el volcado de memoria?


Puede convertir volcados de memoria de MAT a png usando ImageMagick en la línea de comandos.

En MAT para el objeto Bitmap relacionado, haga clic derecho en el campo mBuffer y seleccione "Copiar" -> "Guardar valor en archivo", nombre el archivo con una extensión .rgba .

Debe tener en cuenta el ancho y la altura del mapa de bits de los campos mHeight y mHeight , que puede ver en el objeto Bitmap.

Al tener instaladas las herramientas de línea de comandos de ImageMagick (para Ubuntu apt-get install imagemagick ), emita el comando de convert con los siguientes parámetros.

convert -size ''width''x''height'' -depth 8 filename.rgba filename.png

Por ejemplo

convert -size 680x1209 -depth 8 phone_decor.rgba phone_decor.png

Puede verificar el archivo png generado a través de eog , como eog phone_decor.rgba en Ubuntu fácilmente.