TLDR: Dalvik no era bueno con la asignación de memoria y Enum
usa más memoria que int
. Android Lollipop reemplazó a Dalvik con ART, que no sufre las mismas limitaciones. Por lo tanto, esta recomendación ya no es relevante.
La respuesta larga:
¡Guauu! 8 años, 5 respuestas y muchos comentarios después, la verdadera razón aún no se aborda.
En los días de Android previos a la piruleta, Dalvik era el proceso que usaba VM. Como había una pequeña cantidad de memoria disponible para que las aplicaciones la usaran durante ese tiempo, Dalvik tenía muchas restricciones de memoria. Para la asignación de memoria, Dalvik tuvo que recorrer el montón y encontrar espacio. El montón también se fragmentaría con el tiempo. Dalvik no pudo desfragmentar, por lo que se asignaría con el tiempo y, finalmente, se quedaría sin espacio.
Evite enumeraciones donde solo necesita
proviene de los días de Dalvik porque una Enum
es mucho más grande que una int
y la asignación de memoria era muy costosa.
Avance rápido hoy, Dalvik ha sido reemplazado por ART. ART salió en KitKat y es predeterminado desde Lollipop.
ART fue creado desde cero no para optimizar la memoria sino para optimizar el rendimiento. También está optimizado para asignaciones y colecciones. La razón es que tiene memoria reservada para objetos grandes. En lugar de poner todo en el mismo montón, y luego tener que encontrar espacio para objetos grandes en medio de todos los pequeños, ART coloca todos los objetos grandes y mapas de bits en un montón separado. Y luego los objetos pequeños van en el montón separado. También se puede desfragmentar.
Después de ART, si usa Enum
Android no le importa y es por eso que la recomendación ya no existe.
Esto viene de Chet Haase en Google. Recomiendo encontrar su charla de E / S de Google y ver el video completo. Contiene mucha información útil e información sobre Android.