Mapa de bits extraño con 1 Mb de Heap
Por curiosidad, acabo de probar recientemente mi aplicación de Android para fugas de memoria, utilizando el Eclipse Memory Analyzer.
Me encontré con un mapa de bits extraño con el tamaño de 512 x 512 píxeles utilizando hasta cerca de 1 Megabyte de mi memoria montón de dispositivos.
- Razones por las que mi aplicación Android se bloquea en mi teléfono de forma consistente, pero no en mi emulador
- Gráficos Android gran consumo de memoria montón? - LibGDX
- Android: Error de OutOfMemory y el backstack
- EditText que causa la pérdida de memoria
- Android Eclipse DDMS> Heap> Causa gris de GC
Revisé mi carpeta drawables y no pude encontrar un bitmap de ese tamaño (512 x 512).
Empecé a google y me encontré con esta pregunta, donde un usuario explica cómo obtener la imagen real detrás de una referencia de "pérdida de memoria" en el analizador de memoria:
MAT (Eclipse Memory Analyzer) – cómo ver los mapas de bits del volcado de memoria
He seguido el tutorial y con la ayuda de GIMP, he extraído la siguiente Imagen:
Así que mis preguntas son:
- ¿Que es eso?
- ¿Qué está haciendo en mi montón de aplicaciones?
- ¿Como me deshago de esto?
- ¿Alguien más tiene el mismo mapa de bits en su montón?
Notas:
- En mi carpeta drawables no es un mapa de bits que se ve así
- El bitmap más grande que mi aplicación utiliza es de 140 x 140 píxeles
- Tengo la sensación de que este Bitmap de alguna manera viene del sistema
- El mapa de bits está en montón justo después del inicio de la aplicación, sin ninguna interacción del usuario
- Estoy depurando en un HTC One S, Android 4.1 Cyanogen Mod (Pantalla 540 x 960)
- No utilizo bibliotecas externas
Actualización :
Con la ayuda de la sugerencia de Selvin y mi recorte personal de que esto podría ser un problema del sistema, probé otras dos aplicaciones mías.
Ambas aplicaciones que probé también mostraron el mismo Bitmap en el Analizador de memoria con exactamente la misma cantidad de bytes consumidos:
Además, pude averiguar que:
El origen del mapa de bits siempre está asociado con la actividad LANZADORA de la aplicación.
Entonces, ¿qué hacer al respecto? ¿Hay una manera de deshacerse de él?
Dado que hago operaciones con uso intensivo de memoria en mi aplicación, me gustaría tener la mayor cantidad de montón posible.
- Dirección heap no válida y señal fatal 11
- Tutoriales o ejemplos para la depuración de la memoria de Android
- Android "cerrar la fuerza" lo que exactamente sucede con la memoria
- El número de referencias de método en un archivo .dex supera los 64K
- Consulta sobre propiedades en /system/build.prop
- CORRUPCIÓN DE MEMORIA HEAP EN los errores dlmalloc o dlfree y SIGSEGV en Android ICS 4.0
- Problema de memoria de mapa de bits de Android - Error: falta de memoria en una asignación de 8294416 bytes
- Cómo analizar la memoria usando android studio
El fondo de ventana predeterminado utilizado por Android es una imagen 512×512 (el degradado azul oscuro que ve con el tema oscuro o el gradiente gris-blanco con el tema de luz). En los dispositivos compatibles, esta imagen se sustituye por un gradiente de procedimiento a partir de Android 4.2.
Tenga en cuenta que este mapa de bits se carga normalmente en Zygote y compartido por todas las aplicaciones. Puede aparecer en vertederos de montón si el volcado no excluye objetos asignados por Zygote.
Aquí están los dos fondos de 512×512 de los que estoy hablando si estás interesado: