Android Profiler — adalah seperangkat alat bawaan di Android Studio untuk memantau kinerja aplikasi secara real-time. Ini memungkinkan Anda melacak beban CPU, konsumsi memori, lalu lintas jaringan, dan konsumsi energi tanpa menginstal pustaka pihak ketiga. Menurut Android Developers, profiler terintegrasi langsung ke IDE dan menyediakan metrik dengan akurasi milidetik untuk setiap proses pada perangkat yang terhubung.
Poin utama
Android Profiler — adalah komponen Android Studio yang menggantikan Android Monitor dan DDMS yang sudah usang. Ini menyediakan antarmuka terpadu untuk memprofilkan semua aspek aplikasi: CPU Profiler untuk analisis prosesor, Memory Profiler untuk bekerja dengan memori, Network Profiler untuk permintaan jaringan, dan Energy Profiler untuk konsumsi energi. Data dikumpulkan secara otomatis saat aplikasi dijalankan melalui Android Studio.
Profiler bekerja baik di emulator maupun di perangkat fisik yang terhubung melalui USB. Menurut data Google I/O 2023, Android Profiler digunakan di lebih dari 70% proyek Android dan dianggap sebagai alat standar diagnostik kinerja. Keunggulan utama dibandingkan solusi pihak ketiga — integrasi nol: tidak perlu menambahkan dependensi di build.gradle atau memodifikasi kode aplikasi.
Arsitektur Android Profiler dibangun di atas Perfetto — pelacak sistem Android yang mengumpulkan data di tingkat kernel dan aplikasi. Perfetto memberikan overhead minimal (kurang dari 1% CPU) dan mendukung perekaman jangka panjang hingga 30 menit. Ini memungkinkan pemrofilan tidak hanya operasi cepat, tetapi juga skenario panjang — transisi antar layar, sinkronisasi latar belakang, konsumsi memori selama satu jam penggunaan.
Profiler mengumpulkan empat jenis data: CPU — beban setiap inti dan utas, Memory — Java Heap, Native Heap, Stack, Graphics, Network — semua permintaan masuk dan keluar, Energy — kategori konsumsi energi (Idle, Light, Medium, Heavy). Data disinkronkan pada sumbu waktu — Anda dapat melihat secara bersamaan bagaimana perubahan CPU memengaruhi memori dan konsumsi energi.
CPU Profiler menunjukkan beban prosesor secara real-time pada sumbu waktu, dibagi berdasarkan utas aplikasi. Setiap utas direpresentasikan sebagai garis atau area berwarna — semakin lebar area, semakin banyak waktu prosesor yang digunakan utas. Area merah berarti kerja aplikasi, biru — panggilan sistem, abu-abu — menunggu.
Untuk analisis terperinci, CPU Profiler mendukung tiga mode perekaman: Trace Java Methods (pelacakan semua metode Java), Trace C/C++ Functions (pelacakan fungsi native NDK), dan Sample Java Methods (pengambilan sampel, mode yang direkomendasikan). Pengambilan sampel memberikan overhead terkecil dan cocok untuk pemrofilan sehari-hari, sedangkan pelacakan lengkap untuk menemukan masalah kompleks.
// Contoh: analisis CPU Profiler akan menunjukkan metode ini sebagai bottleneck
class DataProcessor {
suspend fun processLargeDataset(items: List<Item>): List<Result> {
// CPU Profiler akan menunjukkan beban CPU tinggi di inBackgroundThread
return withContext(Dispatchers.Default) {
items.map { it.computeHeavyTransformation() }
}
}
}
// Rekomendasi setelah pemrofilan:
// computeHeavyTransformation memakan 80% waktu — cache hasilnya
class DataProcessorOptimized {
private val cache = LruCache<String, Result>(100)
suspend fun processLargeDataset(items: List<Item>): List<Result> {
return withContext(Dispatchers.Default) {
items.mapNotNull { cache.get(it.id) ?: it.computeHeavyTransformation().also { cache.put(it.id, it) } }
}
}
}
Setelah perekaman, CPU Profiler menampilkan Top-Down Tree — pohon panggilan dengan waktu eksekusi setiap metode. Perhatikan kolom Self Time/Total: jika Self Time metode melebihi 16 md dan dipanggil dari utas UI — ini adalah jaminan frame drop. Solusinya — pindahkan komputasi berat ke utas latar belakang melalui Dispatchers.IO atau Default.
Sample Java Methods — mode yang direkomendasikan untuk pemrofilan sehari-hari dengan overhead 3–5%. Trace Java Methods — pelacakan lengkap setiap panggilan, overhead hingga 15%, digunakan untuk perekaman pendek (5–10 detik). Trace C/C++ Functions — pelacakan kode NDK melalui Linux Perf, sangat diperlukan untuk analisis game dan pustaka C++. Ganti mode tergantung pada jenis masalah.
Memory Profiler melacak semua kategori memori aplikasi: Java Heap (objek JVM), Native Heap (alokasi C/C++ melalui JNI), Stack (tumpukan utas), dan Graphics (tekstur, buffer GPU). Visualisasi utama — grafik waktu konsumsi memori, di mana setiap kategori ditampilkan dengan warnanya sendiri. Jika grafik tidak turun setelah pengumpulan sampah (GC) — curigai kebocoran.
Untuk menemukan kebocoran, gunakan fungsi Capture Heap Dump. Pada saat dump, Android Profiler menghentikan aplikasi selama ~100 md dan membuat file HPROF — snapshot lengkap semua objek Java Heap yang hidup. Setelah membuka dump, Anda dapat mengurutkan objek berdasarkan Retained Size (volume memori yang akan dibebaskan saat objek dihapus) dan mencari instance Activity, Fragment, atau Bitmap yang seharusnya sudah dihancurkan.
Menurut data Google I/O 2022, Memory Profiler bersama dengan LeakCanary mencakup 95% skenario deteksi kebocoran memori di Android. LeakCanary bekerja secara otomatis — mendeteksi kebocoran di latar belakang. Memory Profiler diperlukan untuk analisis manual: Anda melihat gambaran lengkap alokasi, bukan hanya kebocoran.
| Kategori memori | Deskripsi | Ukuran tipikal |
|---|---|---|
| Java Heap | Heap JVM: objek Kotlin/Java | 5–200 MB |
| Native Heap | Alokasi melalui JNI, NDK | 1–100 MB |
| Graphics | Tekstur, buffer GPU | 10–200 MB |
| Stack | Tumpukan semua utas | 1–10 MB |
Setelah menangkap dump, urutkan objek berdasarkan Retained Size — ini adalah volume memori yang akan dibebaskan saat objek dihapus. Cari instance Activity, Fragment, dan Bitmap dengan Retained Size besar yang seharusnya tidak ada di memori. Buka tab Reference Tree untuk melihat rantai referensi yang menahan objek — paling sering ini adalah bidang statis singleton atau callback yang tidak dibersihkan. Metrik penting — Allocation rate (jumlah alokasi per detik). Jika allocation rate melebihi 10.000 objek/dtk, aplikasi menghabiskan terlalu banyak waktu untuk membuat dan menghapus objek sementara, yang membebani GC dan menyebabkan mikro-stutter. Dalam hal ini, gunakan alat View Inspector dan temukan tempat dengan pembuatan objek yang sering dalam perulangan.
Network Profiler menampilkan semua permintaan jaringan aplikasi secara real-time pada sumbu waktu. Setiap permintaan ditampilkan sebagai bilah horizontal — panjangnya sesuai dengan waktu eksekusi, warnanya dengan jenis permintaan (GET, POST, PUT, DELETE). Menggulir sumbu memungkinkan Anda melihat bagaimana permintaan didistribusikan dari waktu ke waktu dan apakah ada duplikasi.
Semua pustaka populer didukung: OkHttp, Retrofit, Volley, Ktor. Untuk Ktor dan OkHttp, profiler menampilkan tumpukan panggilan lengkap termasuk interceptor dan konverter. Untuk setiap permintaan, tersedia Request Headers dan Response Headers, badan respons (hingga 1 MB), kode status, dan durasi.
Masalah umum yang terdeteksi oleh Network Profiler: kurangnya caching (URL yang sama diminta setiap kali dibuka), permintaan duplikat (dua komponen memuat data yang sama secara bersamaan), ukuran respons berlebihan (server mengirim 5 MB padahal perlu 50 KB). Network Profiler membantu melihat masalah seperti itu secara harfiah dalam satu pandangan pada sumbu waktu.
Untuk emulasi jaringan lambat, gunakan Network Conditioning di Android Studio — memungkinkan Anda membatasi bandwidth ke 3G/2G dan menambahkan penundaan. Ini sangat penting untuk menguji perilaku aplikasi dalam kondisi jaringan yang buruk, terutama untuk aplikasi yang beroperasi di wilayah dengan internet tidak stabil.
Energy Profiler mengevaluasi dampak aplikasi pada daya baterai berdasarkan data Perfetto. Alat ini tidak mengukur konsumsi aktual dalam miliampere, tetapi mengklasifikasikan setiap operasi ke dalam salah satu dari lima kategori konsumsi energi: Idle, Light, Medium, High, dan Overloaded. Sumbu waktu Energy Profiler disorot dengan warna: hijau (beban ringan), kuning (sedang), merah (tinggi).
Penyebab utama munculnya zona merah: WakeLock (aplikasi menjaga prosesor tetap aktif), Location GPS (permintaan koordinat konstan dengan presisi tinggi), koneksi Keep-Alive (pertukaran data yang sering dengan server), transmisi data besar (pengiriman file, streaming). Energy Profiler menunjukkan dengan tepat operasi mana dan pada saat mana yang menyebabkan lonjakan konsumsi energi.
Menurut Android Developers, aplikasi tipikal tidak boleh menghabiskan lebih dari 5% waktu dalam kategori High. Jika Energy Profiler menunjukkan zona merah lebih dari 10% waktu pemrofilan — aplikasi tidak akan lulus review berdasarkan kriteria Battery Drain. Rekomendasi — gunakan WorkManager untuk tugas latar belakang, batasi permintaan Location ke presisi minimum yang diperlukan, dan agregat permintaan jaringan dalam batch.
Menjalankan Android Profiler dilakukan dengan satu klik: di Android Studio buka View → Tool Windows → Profiler atau klik dua kali ikon Profiler di panel kanan. Setelah aplikasi dijalankan pada perangkat yang terhubung, Android Studio akan secara otomatis terhubung ke proses dan mulai mengumpulkan data. Grafik CPU, Memory, Network, dan Energy akan segera muncul pada sumbu waktu.
Untuk analisis terperinci, pilih tab yang diinginkan (CPU, Memory, Network, atau Energy) dan mulai perekaman. Untuk CPU, saya merekomendasikan mode Sample Java Methods dengan durasi perekaman 30 detik — ini cukup untuk skenario tipikal. Untuk Memory — heap dump setelah menjalankan skenario (Capture Heap Dump). Untuk Network, perekaman dimulai secara otomatis, cukup tekan tombol Stop setelah skenario selesai.
Setelah menghentikan perekaman, ekspor data: File → Save As menyimpan seluruh sesi dalam file .perf. Ini berguna untuk membandingkan metrik sebelum dan sesudah optimasi. Buat sesi baseline pada versi stabil pertama dan bandingkan setiap sesi baru dengannya — ini adalah satu-satunya cara untuk mengevaluasi perubahan kinerja secara objektif.
Android Profiler dapat dijalankan dari baris perintah melalui Android Studio CLI dan Firebase Test Lab. Firebase Test Lab mendukung pemrofilan kinerja sebagai bagian dari pengujian UI: Anda menerima metrik CPU, Memory, dan Network bersama dengan hasil pengujian. Konfigurasikan pipeline sehingga ketika metrik turun 10% relatif terhadap baseline, pipeline CI diblokir hingga diperiksa oleh pengembang.
Pertanyaan yang sering diajukan
Dampaknya minimal. Android Profiler menggunakan Perfetto untuk pengumpulan data, yang menambahkan kurang dari 1% overhead CPU. Dalam mode Sample Java Methods, overhead sekitar 3–5%, yang tidak signifikan untuk pemrofilan skenario. Pelacakan metode lengkap dapat memberikan overhead hingga 15%, oleh karena itu hanya digunakan untuk perekaman pendek.
Ya, jejak sistem dapat direkam langsung dari perangkat melalui Perfetto CLI: adb shell perfetto --out /data/local/tmp/trace.perf. Kemudian buka file di antarmuka Perfetto UI (ui.perfetto.dev) atau impor ke Android Studio untuk dilihat dengan markup aplikasi lengkap.
Android Profiler — adalah alat sistem yang tidak memerlukan konfigurasi proxy. Menampilkan permintaan langsung di IDE dalam konteks kinerja. Charles Proxy — server proxy eksternal yang menyediakan analisis lebih terperinci (menyadap lalu lintas, memodifikasi permintaan, mengirim ulang). Untuk pemrofilan kinerja gunakan Android Profiler, untuk analisis kontrak API — Charles.
Lakukan heap dump sebelum menjalankan skenario (misalnya, sebelum membuka Activity). Jalankan skenario — buka Activity dan tutup. Lakukan dump kedua. Bandingkan jumlah instance Activity yang hidup: jika di dump kedua lebih banyak — kebocoran. Urutkan berdasarkan Retained Size, temukan Activity berlebih dan periksa Reference Tree untuk menentukan penyebabnya.
Energy Profiler memerlukan dukungan Power Profiles di tingkat perangkat dan Android 8.0+. Di emulator dan beberapa firmware (terutama China) data mungkin tidak tersedia. Solusinya — profil konsumsi energi pada perangkat referensi Pixel atau Samsung dengan firmware Android bersih.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga