Penggunaan memori (RSS anonim + swap) adalah metrik di Android vitals yang mencerminkan penggunaan memori aplikasi Anda.
Memori anonim adalah memori yang tidak didukung oleh file di penyimpanan, seperti alokasi heap dan memori yang dialokasikan mmap. Resident Set Size (RSS) adalah jumlah total halaman memori (bersama dan bukan-bersama) yang digunakan oleh proses yang disimpan dalam RAM fisik. Untuk memori anonim, sistem dapat menulis halaman ke ruang swap (atau zRAM di Android) saat memori tertekan.
Secara keseluruhan, penggunaan memori (RSS anonim + swap) adalah ukuran jumlah total halaman memori aplikasi Anda yang tidak didukung oleh file di penyimpanan, termasuk memori yang juga dipertahankan oleh sistem dalam swap. Melacak RSS anonim + swap memastikan Anda melihat jejak memori aplikasi yang sebenarnya dan tidak dapat dikeluarkan.
Mengidentifikasi penggunaan memori yang tinggi
Android vitals
Android vitals membagikan penggunaan memori aplikasi Anda yang dikelompokkan berdasarkan status proses berikut:
- Latar depan: Proses aplikasi terlihat. P99 yang tinggi di sini sering kali memengaruhi performa yang dirasakan pengguna (jank atau error OOM) dan sangat dipengaruhi oleh mempertahankan komponen atau aktivitas UI yang tidak lagi diperlukan.
- Layanan yang terlihat oleh pengguna: Proses aplikasi berjalan dalam status dapat dirasakan. Hal ini mencakup layanan latar depan, tugas yang dipercepat, dan tugas transfer data yang dimulai oleh pengguna. Hal ini juga dapat diperluas ke layanan yang terikat sistem atau layanan yang terikat oleh aplikasi lain. Karena layanan ini dirancang untuk tugas yang berjalan lama, mempertahankan memori karena kebocoran atau gagal melepaskan resource dapat meningkatkan ekor P99 dari waktu ke waktu.
- Latar belakang: Aplikasi menjalankan layanan latar belakang, atau baru-baru ini dijalankan di latar belakang, tetapi belum di-cache. Di sinilah kebocoran pemrosesan latar belakang dan resource yang belum dilepaskan dapat bertambah. Karena status proses ini kurang penting daripada proses latar depan atau yang dapat dirasakan, coba hindari mempertahankan sejumlah besar memori dalam status ini.
- Di-cache: Aplikasi berada dalam status di-cache. Status ini sangat sensitif terhadap tekanan memori sistem seperti LMK. Karena OS dapat mengeluarkan status proses ini kapan saja, status ini hanya disediakan untuk tujuan debug.
Untuk memahami bagaimana status proses ini berkorelasi dengan callback onTrimMemory, lihat panduan tentang melepaskan memori sebagai respons terhadap peristiwa.
Android vitals juga mengelompokkan penggunaan memori aplikasi Anda berdasarkan bucket RAM. Metrik penggunaan memori ditampilkan sebagai linimasa nilai persentil harian, beserta nilai harian terbaru untuk persentil ke-50 dan ke-90.
Mengidentifikasi kebocoran memori menggunakan kemiringan ekor
Untuk membantu mengidentifikasi kebocoran memori, cari perbedaan antara pengguna umum (P50) dan pengguna akhir (P90) di Android vitals. Meskipun pembengkakan aset umum meningkatkan memori secara seragam di semua persentil, kebocoran memori akan bertambah seiring waktu, sehingga sangat memiringkan data ujung belakang.
Anda harus membandingkan metrik P90 dan P99 dengan dasar P50 menurut nama proses. Jika rasio P90 terhadap P50 Anda melebihi 3,5x, hal ini menunjukkan kemungkinan kebocoran memori selama sesi yang diperpanjang. Untuk kasus penggunaan tertentu, rasio yang tinggi tidak selalu menunjukkan kebocoran, tetapi Anda harus mengevaluasi alur kerja tertentu untuk menentukan apakah penggunaan memori yang tinggi adalah perilaku yang diharapkan.