TLDR: Dalvik не справился с распределением памяти, и Enum
использует больше памяти, чем int
.Android Lollipop заменил Dalvik на ART, который не страдает от тех же ограничений.Таким образом, эта рекомендация больше не актуальна.
Длинный ответ:
Ух ты!8 лет, 5 ответов и много комментариев спустя настоящая причина до сих пор не устранена.
В дни Android перед леденцом на палочке Dalvik использовался как виртуальная машина.Поскольку приложениям для этого времени было доступно небольшое количество памяти, у Дальвика было много ограничений по памяти.Для выделения памяти Далвику пришлось пройти кучу и найти место.Куча также со временем будет фрагментирована.Dalvik не может дефрагментировать, поэтому он будет распределяться с течением времени и в конечном итоге не хватит места.
Избегайте перечислений там, где вам нужны только целые числа
происходит от дней Дальвика, потому что Enum
намного больше, чем int
, а выделение памяти было очень дорогим.
Вскоре, Dalvik был заменен на ART.ART вышел в KitKat и по умолчанию с Lollipop.
ART был создан с нуля не для оптимизации памяти, а для оптимизации производительности.Он также оптимизирован для распределений и сборов.Причина в том, что у него выделена память для больших объектов.Вместо того, чтобы помещать все в одну кучу, а затем находить место для больших объектов среди всех крошечных, ART помещает все большие объекты и растровые изображения в отдельную кучу.И тогда мелкие предметы уходят в отдельную кучу.Также он может дефрагментировать.
После ART, если вы используете Enum
Android, это не волнует, и поэтому рекомендации сейчас не выполняются.
Это от Чета Хаазе из Google.Я рекомендую найти его разговор Google I / O и смотреть все видео.Он содержит много полезной информации и понимания Android.