Bir test cihazından profil aldıktan veya arka ucunuzdan indirdikten sonra, zaman çizelgelerini, iş parçacığı durumlarını ve bellek saklama grafiklerini incelemek için dosyayı Perfetto kullanıcı arayüzünde açabilirsiniz. Bu sayfada, ProfilingManager ile yakalanan, düzenlenmiş sistem izleri ve Java yığın dökümlerinde nasıl gezineceğiniz açıklanmaktadır.
Sistem izlerini görselleştirme
Zaman içindeki CPU ve iş parçacığı etkinliğini incelemek için .perfetto-trace dosyanızı Perfetto kullanıcı arayüzünde açın.
ProfilingManager, kullanıcı gizliliğini korumak için diğer tüm işlemlerden gelen CPU etkinliğini tek bir OtherProcesses izinde birleştirerek sistem izlerini çıkartır.
Bu birleştirilmiş izi inceleyerek uygulamanızdaki yavaşlığın dahili bir darboğazdan mı yoksa genel cihaz yükünden mi kaynaklandığını belirleyebilirsiniz.
Şekil 2'de, çıkartılmış bir sistem izlemenin ana bölümleri vurgulanmaktadır:
- CPU listesi: Cihazınızdaki tüm kullanılabilir işlemcileri gösterir.
- CPU görevleri: Her CPU'nun hangi iş parçacıklarını yürüttüğünü gösterir.
- Diğer işlemler görünümü: Diğer işlemler tarafından tüketilen CPU kaynaklarını gösterir.
- İşlem Görünümü: Uygulamanızın işlemini gösterir.
- İleti Dizileri Görünümü: İşleminizde çalışan ileti dizilerini ve bunların ileti dizisi durumlarını (Çalıştırılabilir (R), Çalışıyor (R), Uyku (S), Kesintisiz Uyku (D)) gösterir. Bu durumlar doğrudan Linux İşlem Durumları ile eşlenir.
- İzleme dilimleri: Bu bölümde, uygulama geliştiriciler veya çerçeve tarafından eklenen izleme ek açıklamaları gösterilir. Bu ek açıklamalar,
Trace.beginSectionileTrace.endSectionarasındaki hesaplamaları kapsar.
Perfetto kullanıcı arayüzü ve izleme görselleştirmesi hakkında daha fazla bilgi için Perfetto belgelerine bakın.
Java yığın dökümlerini görselleştirme
PROFILING_TYPE_JAVA_HEAP_DUMP kullanarak Java yığın dökümü aldıktan sonra, bellek sızıntılarını tespit etmek veya bellek kullanımını optimize etmek için elde edilen .perfetto-java-heap-dump dosyasını Perfetto kullanıcı arayüzünde açın. Yığın dökümü gezgininde,
Şekil 3'te gösterildiği gibi yığın grafiğini inceleyebilir, kümülatif nesne boyutlarının alev grafiklerini inceleyebilir,
sınıflara, nesnelere ve baskınlara göz atabilirsiniz.
ProfilingManager yığın dökümlerinin HPROF dökümlerinden farkı
Standart .hprof yığın dökümlerinin (ör. Debug.dumpHprofData ile veya Android Studio'da yakalananlar) aksine ProfilingManager, bir Perfetto ART yığın dökümü (.perfetto-java-heap-dump) yakalar. ProfilingManager, ham bellek içeriklerini dökümlemek yerine nesne saklama grafiğini ve boyutlandırma meta verilerini kaydeder ancak nesnelerde depolanan ham verileri atlar:
- Toplanan veriler:
- Sınıflar ve türler: Sınıf adları, üst sınıf hiyerarşileri, sınıf yükleyiciler, örnek boyutları ve referans türleri (normal sınıflar, diziler, dizeler veya zayıf, yumuşak, sonlandırıcı ve hayalet referanslar gibi).
- Nesne örnekleri ve boyutları: Her nesnenin sığ boyutu (
self_size), yığın bölgesi (HEAP_TYPE_APP,HEAP_TYPE_ZYGOTEveyaHEAP_TYPE_BOOT_IMAGE) veNativeAllocationRegistryaracılığıyla kaydedilen ilişkili yerel bellek. - Referanslar ve GC kökleri: Çöp toplama kökleri (ör. JNI genel ve yerel öğeleri, Java yığın çerçeveleri ve iş parçacığı nesneleri) ve hangi nesnenin başka bir nesneyi hangi alan adı üzerinden tuttuğunu gösteren alan düzeyinde referans zincirleri.
- Boyutlandırma meta verilerini seçin: Belirli çerçeve türleri için hassas olmayan meta veriler (ör.
Bitmapboyutları [mWidthvemHeight]).
- Atlananlar: Gerçek temel alan değerleri,
Stringkarakter içerikleri ve ham dizi yükleri (byte[],char[]ve diğer temel diziler). Ham nesne içeriklerinin atlanması, üretim cihazlarında kullanıcı gizliliğini korur ve döküm dosyalarını önemli ölçüde küçültür.
Sonraki adımlar
Perfetto kullanıcı arayüzündeki görsel incelemenin yanı sıra PerfettoSQL ile profilleri sorgulayabilir, izleri toplu olarak analiz edebilir veya profilleri yapay zeka ile analiz edebilirsiniz.