Setelah mengambil profil dari perangkat pengujian atau mendownloadnya dari
backend, Anda dapat membuka file di Perfetto UI untuk memeriksa linimasa,
status thread, dan grafik retensi memori. Halaman ini menjelaskan cara menavigasi
pelacakan sistem yang disamarkan dan heap dump Java yang diambil dengan ProfilingManager.
Memvisualisasikan pelacakan sistem
Buka file .perfetto-trace di UI Perfetto untuk memeriksa aktivitas CPU dan
thread dari waktu ke waktu.
Untuk melindungi privasi pengguna, ProfilingManager menyamarkan pelacakan sistem dengan menggabungkan
aktivitas CPU dari semua proses lain ke dalam satu jalur OtherProcesses.
Dengan memeriksa jalur gabungan ini, Anda tetap dapat menentukan apakah kelambatan di
aplikasi disebabkan oleh bottleneck internal atau beban perangkat secara keseluruhan.
Gambar 2 menyoroti bagian utama pelacakan sistem yang disamarkan:
- Daftar CPU: Menampilkan semua prosesor yang tersedia di perangkat Anda.
- Tugas CPU: Menampilkan thread yang dijalankan setiap CPU.
- Tampilan proses lainnya: Menampilkan resource CPU yang digunakan oleh proses lain.
- Process View: Menampilkan proses aplikasi Anda.
- Threads View: Menampilkan thread yang berjalan dalam proses Anda dan status thread-nya (Dapat dijalankan (R), Berjalan (R), Tidur (S), Tidur yang Tidak Dapat Diganggu (D)), yang dipetakan langsung ke Status Proses Linux.
- Trace slices: Bagian ini menampilkan anotasi rekaman aktivitas yang ditambahkan oleh developer
aplikasi atau framework. Anotasi ini mencakup komputasi
antara
Trace.beginSectiondanTrace.endSection.
Untuk mengetahui informasi selengkapnya tentang UI Perfetto dan visualisasi rekaman aktivitas, lihat dokumen Perfetto.
Memvisualisasikan heap dump Java
Setelah Anda merekam heap dump Java menggunakan PROFILING_TYPE_JAVA_HEAP_DUMP,
buka file .perfetto-java-heap-dump yang dihasilkan di Perfetto UI untuk
mengidentifikasi kebocoran memori atau mengoptimalkan penggunaan memori. Di Heapdump Explorer,
Anda dapat menjelajahi grafik heap, memeriksa flame graph ukuran objek kumulatif,
serta menjelajahi class, objek, dan dominator, seperti yang ditunjukkan pada Gambar 3.
Perbedaan dump heap ProfilingManager dengan dump HPROF
Tidak seperti heap dump .hprof standar (seperti yang diambil dengan
Debug.dumpHprofData atau di Android Studio), ProfilingManager mengambil
heap dump ART Perfetto (.perfetto-java-heap-dump). Daripada membuang
konten memori mentah, ProfilingManager mencatat grafik retensi objek dan
metadata ukuran sambil menghilangkan data mentah yang disimpan di dalam objek:
- Yang dikumpulkan:
- Class dan jenis: Nama class, hierarki superclass, classloader, ukuran instance, dan jenis referensi (seperti class normal, array, string, atau referensi lemah, soft, finalizer, dan phantom).
- Instance dan ukuran objek: Shallow size setiap objek
(
self_size), region heap-nya (HEAP_TYPE_APP,HEAP_TYPE_ZYGOTE, atauHEAP_TYPE_BOOT_IMAGE), dan memori native terkait yang terdaftar melaluiNativeAllocationRegistry. - Referensi dan root GC: Root pembersihan sampah memori (seperti JNI global dan lokal, frame stack Java, dan objek thread) serta rantai referensi tingkat kolom yang menunjukkan objek mana yang mempertahankan objek lain dan melalui nama kolom mana.
- Pilih metadata penentuan ukuran: Metadata tidak sensitif untuk jenis framework tertentu, seperti dimensi
Bitmap(mWidthdanmHeight).
- Yang dihilangkan: Nilai kolom primitif sebenarnya, konten karakter
String, dan payload array mentah (byte[],char[], dan array primitif lainnya). Menghilangkan konten objek mentah akan melindungi privasi pengguna di perangkat produksi dan membuat file dump jauh lebih kecil.
Langkah berikutnya
Selain pemeriksaan visual di UI Perfetto, Anda dapat membuat kueri profil dengan PerfettoSQL, menganalisis rekaman aktivitas secara massal, atau menganalisis profil dengan AI.