TLDR: Dalvik không tốt trong việc cấp phát bộ nhớ và Enum
sử dụng nhiều bộ nhớ hơnint
. Android Lollipop đã thay thế Dalvik bằng ART không gặp phải những hạn chế tương tự. Do đó khuyến nghị này không còn phù hợp nữa.
Câu trả lời dài:
Ồ 8 năm, 5 câu trả lời và nhiều bình luận sau đó lý do thực sự vẫn chưa được giải quyết.
Trong những ngày Android tiền kẹo mút, Dalvik là quá trình VM được sử dụng. Vì số lượng bộ nhớ nhỏ có sẵn cho các ứng dụng sử dụng trong thời gian đó, Dalvik có rất nhiều hạn chế về bộ nhớ. Để phân bổ bộ nhớ, Dalvik phải đi bộ và tìm chỗ trống. Heap cũng sẽ bị phân mảnh theo thời gian. Dalvik không thể chống phân mảnh, vì vậy nó sẽ phân bổ theo thời gian và cuối cùng hết dung lượng.
Tránh Enums Nơi bạn chỉ cần Ints
đến từ những ngày Dalvik vì một Enum
cái lớn hơn rất nhiềuint
và phân bổ bộ nhớ rất tốn kém.
Chuyển tiếp nhanh ngày hôm nay, Dalvik đã được thay thế bởi ART. ART xuất hiện trong KitKat và được mặc định kể từ Lollipop.
ART được tạo ra từ đầu để không tối ưu hóa cho bộ nhớ mà để tối ưu hóa cho hiệu suất. Nó cũng được tối ưu hóa để phân bổ và bộ sưu tập. Lý do là nó có bộ nhớ dành cho các đối tượng lớn. Thay vì đặt mọi thứ trong cùng một đống, và sau đó phải tìm không gian cho các vật thể lớn giữa tất cả những vật nhỏ bé, ART đặt tất cả các vật thể lớn và bitmap thành một đống riêng biệt. Và sau đó các đối tượng nhỏ đi trong đống riêng biệt. Ngoài ra nó có thể chống phân mảnh.
Sau ART, nếu bạn sử dụng Enum
Android thì không quan tâm và đây là lý do tại sao khuyến nghị không còn nữa.
Điều này đến từ Chet Haase tại Google. Tôi khuyên bạn nên tìm Google I / O talk của anh ấy và xem toàn bộ video. Nó chứa rất nhiều thông tin hữu ích và cái nhìn sâu sắc về Android.