Perfetto kullanıcı arayüzünde profilleri görselleştirme

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.

Perfetto kullanıcı arayüzünde, çıkartılmış bir sistem izlemenin zaman çizelgesi
Şekil 1. Redacted trace example.

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:

Perfetto kullanıcı arayüzünde, düzenlenmiş bir sistem izlemenin numaralandırılmış bölümleri
Şekil 2. İzlemenin sansürlenmiş bölümleri.
  1. CPU listesi: Cihazınızdaki tüm kullanılabilir işlemcileri gösterir.
  2. CPU görevleri: Her CPU'nun hangi iş parçacıklarını yürüttüğünü gösterir.
  3. Diğer işlemler görünümü: Diğer işlemler tarafından tüketilen CPU kaynaklarını gösterir.
  4. İşlem Görünümü: Uygulamanızın işlemini gösterir.
  5. İ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.
  6. İ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.beginSection ile Trace.endSection arası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.

Java yığın nesnesi boyutlarının alev grafiğini gösteren Perfetto kullanıcı arayüzü Heapdump Explorer.
Şekil 3. Perfetto kullanıcı arayüzündeki Java yığın dökümü alev grafiği.

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_ZYGOTE veya HEAP_TYPE_BOOT_IMAGE) ve NativeAllocationRegistry aracı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. Bitmap boyutları [mWidth ve mHeight]).
  • Atlananlar: Gerçek temel alan değerleri, String karakter 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.