TLDR: Далвіку було непогано з розподілом пам'яті і він Enum
використовує більше пам'яті, ніж int
. Android Lollipop замінив Dalvik на ART, який не зазнає однакових обмежень. Тому ця рекомендація вже не актуальна.
Довга відповідь:
Оце Так! 8 років, 5 відповідей і багато коментарів пізніше справжня причина все ще не вирішена.
У перед-льодяникові Android дні Далвік був процесом, що використовувався ВМ. Оскільки невеликий обсяг пам’яті був доступний для програм, які використовувались у той час, у Далвіка було багато обмежень щодо пам’яті. Для виділення пам’яті Далвіку довелося пройтися по купі і знайти місце. Купа також буде роздроблена з часом. Дальвік не міг дефрагментуватись, тому він би виділявся з часом і врешті-решт не вистачало місця.
Уникайте енумів там, де вам потрібні лише інти
походить з Далвік днів, тому що Enum
це набагато більше, ніж int
і розподіл пам'яті було дуже дорогим.
Сьогодні вперед, Дальвік змінив ART. ART вийшов у KitKat і за замовчуванням починає працювати з Lollipop.
АРТ створено з нуля не для оптимізації пам’яті, а для оптимізації продуктивності. Він також оптимізований для розподілу та колекцій. Причина в тому, що для великих об'єктів відведена пам'ять. Замість того, щоб розміщувати все в одній купі, а потім потрібно знаходити простір для великих об'єктів серед усіх крихітних, ART розміщує всі великі об'єкти та растрові карти в окрему купу. А потім дрібні предмети йдуть в окрему купу. Також він може дефрагментувати.
Після ART, якщо ви користуєтесь Enum
Android, це не важливо, і саме тому зараз рекомендація відсутня.
Це йде від Chet Haase в Google. Рекомендую знайти його розмову в I / O в Google і переглянути все відео. Він містить багато корисної інформації та розуміння Android.