2012-03-07 34 views
5

Tôi có một ứng dụng Android rất đơn giản bao gồm một Hoạt động đơn lẻ với một số hộp văn bản và một chút mã xử lý.Tại sao ứng dụng Android của tôi phân bổ số lượng bộ nhớ khác nhau đáng kể trên các phiên bản hệ điều hành khác nhau?

Khi tôi cài đặt nó trên thiết bị 2.3 và mở nó lần đầu tiên, nó phân bổ ~ 2,7MB bộ nhớ (theo tab cập nhật Heap trong Eclipse DDMS).

Trên thiết bị 3.1, thiết bị phân bổ ~ 6.1MB.

Trên thiết bị 4.0, thiết bị phân bổ ~ 13,8MB.

Tôi đã không thực hiện thay đổi mã nào giữa 3 và các biện pháp này được thực hiện khi cài đặt/mở ban đầu của ứng dụng (vì vậy không có thời gian để thực hiện bất kỳ rò rỉ nào). Nó không sử dụng hình ảnh, và không cụ thể có tăng tốc phần cứng được kích hoạt.

Có ai biết tại sao dấu chân có thể khác biệt quá nhiều không? Tôi cho rằng nó có liên quan đến sự khác biệt trong các phiên bản hệ điều hành, nhưng tôi tự hỏi liệu có ai biết những khác biệt đó có thể là gì hay không.

Tôi đã đọc về sự thay đổi trong phân bổ Bitmap từ 3.0 trở đi gây ra sự gia tăng rõ ràng trong bộ nhớ được cấp phát, nhưng ứng dụng của tôi không sử dụng bất kỳ hình ảnh nào. Nó chỉ bao gồm một vài trường EditText và TextViews.

+0

Bạn có thể sử dụng Trình phân tích bộ nhớ để biết chi tiết và so sánh phân bổ không? – Asahi

Trả lời

1

Ảnh bitmap tổ ong trước được phân bổ theo vùng gốc. Kể từ Android 3.0 (bao gồm ICS), dữ liệu pixel cho bitmap được phân bổ trong vùng Dalvik. Sự khác biệt giữa 2,3 và 3,1 có thể là do điều này.

ICS thực sự sử dụng bộ nhớ hơn 3.1 và tôi không biết lý do cho nó.

+0

Tôi đã đọc về các bitmap, nhưng ứng dụng của tôi không sử dụng bất kỳ hình ảnh nào cả. Nó chỉ có một số trường TextViews và EditText. Mặc dù tôi đoán những người có thể được trả lại bằng cách sử dụng bitmap bên trong hệ điều hành? Tuy nhiên điều đó không giải thích được cú nhảy từ 3.1 đến 4.0. – mWillis

Các vấn đề liên quan