TLDR: Dalvik nie radził sobie dobrze z alokacją pamięci i Enum
zużywa więcej pamięci niż int
. Android Lollipop zastąpił Dalvik ART, który nie ma takich samych ograniczeń. Dlatego to zalecenie nie ma już zastosowania.
Długa odpowiedź:
Łał! 8 lat, 5 odpowiedzi i wiele komentarzy później, prawdziwy powód nadal nie został rozwiązany.
W czasach prelollipop Android, Dalvik był procesem używanym jako maszyna wirtualna. Ponieważ w tym czasie dostępna była niewielka ilość pamięci dla aplikacji, w Dalvik było wiele ograniczeń pamięci. Aby przydzielić pamięć, Dalvik musiał przejść stos i znaleźć miejsce. Sterta również ulegała fragmentacji z czasem. Dalvik nie mógł zdefragmentować, więc przydzielałby go w czasie i ostatecznie zabrakło miejsca.
Unikaj wyliczeń tam, gdzie potrzebujesz tylko Ints
pochodzi z czasów Dalvik, ponieważ Enum
jest dużo większy niż a, int
a alokacja pamięci była bardzo droga.
W dzisiejszych czasach Dalvik został zastąpiony przez ART. ART pojawił się w KitKat i jest domyślny od Lollipopa.
ART został stworzony od podstaw nie po to, aby zoptymalizować pamięć, ale aby zoptymalizować wydajność. Jest również zoptymalizowany pod kątem alokacji i kolekcji. Powodem jest to, że ma pamięć zarezerwowaną dla dużych obiektów. Zamiast umieszczać wszystko w tej samej stercie, a następnie szukać miejsca na duże obiekty pośród wszystkich malutkich, ART umieszcza wszystkie duże obiekty i mapy bitowe w osobnej stercie. A potem małe przedmioty trafiają do oddzielnej sterty. Może również defragmentować.
Po ART, jeśli używasz Enum
Androida, to nie obchodzi i dlatego rekomendacja zniknęła.
To pochodzi od Cheta Haase'a z Google. Polecam znaleźć jego dyskusję Google I / O i obejrzeć cały film. Zawiera wiele przydatnych informacji i wgląd w Androida.