Trang này chứa thông tin về cách tìm và kích hoạt rò rỉ bộ nhớ chỉ có trong bố cục dựa trên Khung hiển thị. Để biết thông tin cốt lõi về cách ghi lại và phân tích tệp báo lỗi, hãy xem phần Ghi lại tệp báo lỗi.
Tìm lỗi rò rỉ bộ nhớ
Để nhanh chóng lọc các lớp có thể liên kết với lỗi rò rỉ bộ nhớ, hãy mở trình đơn thả xuống lớp rồi chọn Show activity/fragment leaks (Hiện lỗi rò rỉ hoạt động/phân mảnh). Android Studio cho thấy những lớp mà theo đó, lỗi rò rỉ bộ nhớ có thể xảy ra đối với các thực thể Activity và Fragment trong ứng dụng của bạn. Bộ lọc này hiển thị những loại dữ liệu sau đây:
- Các thực thể
Activityđã bị huỷ bỏ nhưng vẫn đang được tham chiếu. - Các thực thể
Fragmentkhông cóFragmentManagerhợp lệ nhưng vẫn đang được tham chiếu.
Xin lưu ý rằng bộ lọc có thể mang lại kết quả dương tính giả trong các trường hợp sau:
Fragmentđược tạo nhưng chưa được sử dụng.Fragmentđang được lưu vào bộ nhớ đệm nhưng không thuộcFragmentTransaction.
Để tìm rò rỉ bộ nhớ theo cách thủ công hơn, hãy duyệt xem danh sách lớp và phiên bản để tìm các đối tượng có Retained Size (Kích thước giữ lại) lớn. Tìm lỗi rò rỉ bộ nhớ do bất kỳ nguyên nhân nào sau đây:
- Các lượt tham chiếu kéo dài đến
Activity,Context,View,Drawablevà các đối tượng khác có thể duy trì tham chiếu đến vùng chứaActivityhoặcContext. - Các lớp không tĩnh bên trong (chẳng hạn như
Runnable) có thể duy trì một thực thểActivity. - Bộ nhớ đệm duy trì các đối tượng lâu hơn mức cần thiết.
Khi bạn phát hiện thấy các trường hợp có thể gây rò rỉ bộ nhớ, hãy sử dụng thẻ Fields (Trường) và References (Giá trị tham chiếu) trong Instance Details (Thông tin chi tiết về phiên bản) để chuyển đến phiên bản hoặc dòng mã nguồn mà bạn quan tâm.
Kích hoạt rò rỉ bộ nhớ để kiểm thử
Để kích hoạt sự cố rò rỉ bộ nhớ nhằm kiểm thử trong ứng dụng, bạn có thể kích hoạt sự cố rò rỉ theo một trong các cách sau:
- Liên tục xoay thiết bị từ chế độ dọc sang chế độ ngang rồi ngược lại trong khi ở nhiều trạng thái hoạt động. Việc xoay thiết bị thường có thể khiến ứng dụng rò rỉ đối tượng
Activity,ContexthoặcViewvì hệ thống tạo lạiActivityvà nếu ứng dụng của bạn tham chiếu đến một trong những đối tượng đó ở nơi khác, thì hệ thống không thu thập được rác của đối tượng đó. - Chuyển đổi giữa ứng dụng của bạn và một ứng dụng khác khi ở nhiều trạng thái hoạt động. Ví dụ: chuyển đến màn hình chính, sau đó quay lại ứng dụng của bạn.