Tôi biết rằng có 2-3 chủ đề về vấn đề này, đã xảy ra sự cố với FinalizerReference
nhưng vẫn chưa được giải thích rõ. Tôi có một câu hỏi về lớp học này và cách thức hoạt động của nó.Android FinalizerReference sử dụng 7mb RAM
Không có vấn đề gì tôi làm trong ứng dụng của tôi, luôn luôn giữ FinalizerReference
5-10 RAM
cho chính nó, và câu hỏi của tôi là:
đây là một hành vi bình thường mà tôi không phải lo lắng về?
Như tôi biết, đối tượng Java được giải phóng, nhưng 'con trỏ' ở lại trong bộ nhớ và chúng được làm sạch với GC tiếp theo (cũng như đối tượng bình thường được làm sạch bằng GC, không có tham chiếu đến nó).
Đối với tôi, đây là một chút sai, bởi vì nếu tôi có ~ 64 MB RAM để sử dụng với ứng dụng của tôi và 10MB bị lãng phí - phải có một vấn đề.
Tôi đã kiểm tra tất cả, xóa tất cả các rò rỉ mà tôi có và hiện tại ứng dụng của tôi chỉ ở mức 18 ~ mb RAM (7 RAM - đồ họa, 2 RAM - Đối tượng). Phần còn lại - FinalizerReference
;/
Dưới đây là một ảnh chụp màn hình từ AppHeap:
đây là một màn hình từ đó là trường hợp:
và đây là màn hình bộ nhớ của tôi (nó sẽ nằm trong dạng này trong 30 phút):
Ngoài ra, trong bảng điều khiển 'Trường hợp', có 50 mục nhập bao gồm ~ 5 từ mã và thư viện của tôi mà tôi sử dụng. Phần còn lại là từ Android - InputManagers, Bưu kiện, Proxy, vv
Sửa
Điều này xảy ra trên Galaxy S5. Trên Android Emulator tôi nhận được ~ 2MB từ FinalizerReference
Tôi có nghĩa là hệ thống, bởi vì nó có "Hệ thống Class" được viết bên cạnh nó và nhiều như tôi biết, nó có nghĩa là hệ thống Android đã tải lớp đó – hakobyanheghine