2012-03-07 19 views
5

Tengo una aplicación de Android muy simple que consiste en una sola actividad con algunos cuadros de texto y un poco de código de procesamiento.¿Por qué mi aplicación para Android asigna cantidades sustancialmente diferentes de memoria en diferentes versiones del sistema operativo?

Cuando lo instalo en un dispositivo 2.3 y lo abro por primera vez, asigna ~ 2.7MB de memoria (de acuerdo con la pestaña de actualización de Hep en Eclipse DDMS).

En un dispositivo 3.1, asigna ~ 6.1MB.

En un dispositivo 4.0, asigna ~ 13.8MB.

No realicé cambios de código entre los 3, y estas medidas se tomaron con la instalación/apertura inicial de la aplicación (por lo que no ha tenido tiempo de hacer ninguna fuga). No utiliza imágenes y no tiene habilitada específicamente la aceleración de hardware.

¿Alguien sabe por qué las huellas pueden diferir tanto? Supongo que tiene que ver con las diferencias en las versiones del sistema operativo, pero me pregunto si alguien sabe cuáles podrían ser esas diferencias.

He leído sobre el cambio en la asignación de mapa de bits de 3.0 en adelante causando aumentos aparentes en la memoria asignada, pero mi aplicación no utiliza ninguna imagen. Solo consta de unos pocos campos EditText y TextViews.

+0

¿Se puede usar el Analizador de memoria para obtener detalles y comparar asignaciones? – Asahi

Respuesta

1

Los mapas de bits Pre-Honeycomb se asignaron en el montón nativo. Desde Android 3.0 (incluido ICS), los datos de píxeles para mapas de bits se asignan en el montón Dalvik. La diferencia entre 2.3 y 3.1 podría deberse a esto.

ICS de hecho utiliza memoria de 3.1 y no sé la razón para ello.

+0

He leído sobre los mapas de bits, pero mi aplicación no usa ninguna imagen. Solo tiene algunos campos TextViews y EditText. Aunque supongo que esos podrían ser representados usando bitmaps internos para el sistema operativo. Aún así, eso no explica el salto de 3.1 a 4.0. – mWillis

Cuestiones relacionadas