Tôi đang làm việc trên một ứng dụng xử lý nhiều phân bổ (theo thứ tự 4 triệu đôi và một triệu lớp). Tôi đã xem qua các bản ghi thu gom rác và tôi thấy số lượng bộ nhớ khác nhau được giải phóng trên các thiết bị khác nhau.Android Garbage Collector Bộ nhớ giải phóng
Ví dụ: Tôi có Moto X (2014) kết thúc giải phóng chỉ hơn 312 MB. Tôi cũng có một Droid Bionic chạy cùng một mã trên cùng một dữ liệu giải phóng trung bình 616 MB. Cả hai thiết bị đều có kích thước khoảng 50 MB.
Tại sao bộ nhớ nhiều hơn được giải phóng bởi GC trên Bionic so với Moto X? Họ nên tạo ra cùng một lượng rác mỗi. Điều gì đang xảy ra đằng sau hậu trường trong bộ thu gom rác? Moto X là trên Android 5.1 và Bionic là trên 4.1.2.
Chỉnh sửa: Tôi có bốn thiết bị đang giải phóng khoảng 300 MB RAM: Moto X (2014), Nexus 7 2013, Nexus 7 2012 và Razr i. Cả bốn loại thuốc này đều sử dụng ART. Bionic đang chạy thời gian chạy Dalvik. Đây có phải là lý do tại sao có ít giải phóng? Tôi nhận thấy GC_FOR_ALLOC không xảy ra trong ART nhưng được gọi là tất cả thời gian trên Dalvik.
Tôi nghĩ sự khác biệt là do kiến trúc vi xử lý được sử dụng. MotoX sử dụng Qualcomm Snapdragon S4 (bộ lệnh ARMv7), Bionix đã sử dụng Cortex A-A53 được cập nhật nhiều hơn (bộ lệnh ARMv8). –
@ShreyasChavan đó là 2014 Moto X vì vậy nó có một Snapdragon 801 và Bionic (từ năm 2011) đã có một TI OMAP Cortex-A9 –
Kiến trúc bộ vi xử lý không liên quan. Dalvik của heap và GC đã tích cực phát triển cho đến giữa năm 2011, khi tất cả mọi thứ chuyển sang phát triển nghệ thuật. Bạn có thể thấy sự khác biệt mà nhiều năm phát triển có thể thực hiện. Tôi biết rất ít về nội dung của Art, vì vậy tôi không thể cung cấp bất kỳ thông tin chi tiết cụ thể nào. Tôi sẽ chỉ ra rằng nhìn vào thông điệp tường trình là một so sánh táo-to-cam, và việc thiếu đăng nhập theo phong cách Dalvik trên một thiết bị nghệ thuật không có nghĩa là các hành động tương đương sẽ không diễn ra. – fadden