MAT (Eclipse Memory Analyzer) - como visualizar mapas de bits de despejo de memória
-
13-12-2019 - |
Pergunta
Eu estou analisando o uso de memória do meu aplicativo Android com a ajuda de Eclipse Memory Analyzer (também conhecido como MAT).Às vezes eu posso achar estranho instâncias de android.graphics.Bitmap
classe, utilizando grande parte da pilha.O problema é que eu não consigo encontrar a fonte desta bitmaps, não nome de ficheiro, não resourceID, nada.Todas as informações que eu posso encontrar para o mapa de bits é o seguinte:
Há um campo mBuffer
com a matriz de pixels da imagem, eu suponho.Mas em alguns interno Android formato PNG.
Pergunta:como posso ver a imagem representada por este mapa de bits a partir de despejo de memória?
Solução
Eu encontrei uma maneira de ver esses bitmaps:
- Primeiro, você precisa baixar e instalar GIMP
- De seguida, encontrar o seu
Bitmap
objeto no TAPETE, clique com o botão direito do mouse emmBuffer
campo, no menu de contexto escolha "Copiar" -> "Salvar O Valor Para Arquivo" item de menu e salvar o valor desta matriz para alguns ficheiros - dar de extensão
.data
para arquivo - lançamento do GIMP, escolha "Arquivo" -> "Abrir", selecione seu
.data
arquivo e clique em Aberto botão - "Carregar Imagens a partir de Dados Brutos" caixa de diálogo irá aparecer.Aqui você precisa para definir parâmetros corretos para o mapa de bits
- primeiro, escolha "Tipo de imagem" como "RGB Alpha" (Android mais recursos têm este tipo de imagem, mas você pode precisar experimentar com outros tipos de imagem)
- segundo, o conjunto correto Largura e Altura para o mapa de bits (dimensões corretas podem ser encontradas no despejo de memória)
Nesse ponto, você já deve observar pré-visualização da imagem original.Se não, você pode tentar alterar alguns outros parâmetros de "Carregar Imagens a partir de Dados Brutos" diálogo.
NOTA:para obter uma largura e altura da imagem, você pode olhar para mWidth
e mHeight
campos em ESTEIRA na seção atributos, como mostrado na imagem em questão.
Outras dicas
Você pode converter de despejos de memória do TAPETE png usando com ImageMagick na linha de comando.
No MAT
relacionados Bitmap
objeto do direito do rato mBuffer
campo e selecione "Copiar" -> "Salvar o Valor Para o Arquivo", o nome do arquivo com um .rgba
extensão.
Você precisa observação de mapa de bits de largura e altura de mWidth
e mHeight
campos, que você pode ver no objecto de mapa de bits.
Ter ImageMagick
ferramentas de linha de comando instalado (para o Ubuntu apt-get install imagemagick
), a emissão de convert
comando com os seguintes parâmetros.
convert -size 'width'x'height' -depth 8 filename.rgba filename.png
Por exemplo
convert -size 680x1209 -depth 8 phone_decor.rgba phone_decor.png
Você pode verificar gerado o arquivo png através de eog, como eog phone_decor.rgba
no Ubuntu
facilmente.