TLDR: Dalvik n'était pas bon avec l'allocation de mémoire et Enum
utilise plus de mémoire que int
. Android Lollipop a remplacé Dalvik par ART qui ne souffre pas des mêmes limitations. Cette recommandation n'est donc plus pertinente.
La réponse longue:
Hou la la! 8 ans, 5 réponses et de nombreux commentaires plus tard, la vraie raison n'est toujours pas abordée.
À l'époque d'Android pré-sucette, Dalvik était le processus VM utilisé. Comme une petite quantité de mémoire était disponible pour les applications à utiliser pendant cette période, Dalvik avait beaucoup de contraintes de mémoire. Pour l'allocation de mémoire, Dalvik a dû parcourir le tas et trouver de l'espace. Heap serait également fragmenté au fil du temps. Dalvik ne pouvait pas défragmenter, donc il allouerait au fil du temps et finirait par manquer d'espace.
Évitez les énumérations là où vous n'avez besoin que d'Ints
vient de l'époque de Dalvik car un Enum
est beaucoup plus gros qu'un int
et l'allocation de mémoire était très chère.
Aujourd'hui, Dalvik a été remplacé par ART. ART est sorti dans KitKat et est par défaut depuis Lollipop.
ART a été créé dès le départ non pas pour optimiser la mémoire mais pour optimiser les performances. Il est également optimisé pour les allocations et les collections. La raison en est que la mémoire est réservée aux gros objets. Au lieu de tout mettre dans le même tas, puis de devoir trouver de l'espace pour les gros objets parmi tous les petits, ART met tous les gros objets et les bitmaps dans un tas séparé. Et puis les petits objets vont dans le tas séparé. En outre, il peut défragmenter.
Après ART, si vous utilisez Enum
Android, ça ne fait rien et c'est pourquoi la recommandation a disparu maintenant.
Cela vient de Chet Haase chez Google. Je recommande de trouver son discours Google I / O et de regarder toute la vidéo. Il contient de nombreuses informations utiles et un aperçu d'Android.