Nachdem Sie ein Profil von einem Testgerät abgerufen oder von Ihrem Backend heruntergeladen haben, können Sie die Datei in der Perfetto-Benutzeroberfläche öffnen, um Zeitachsen, Thread-Status und Diagramme zur Speicherbelegung zu prüfen. Auf dieser Seite wird beschrieben, wie Sie in entfernten System-Traces und Java-Heap-Dumps navigieren, die mit ProfilingManager erfasst wurden.
System-Traces visualisieren
Öffnen Sie die Datei .perfetto-trace in der Perfetto-Benutzeroberfläche, um die CPU- und Thread-Aktivität im Zeitverlauf zu prüfen.
Zum Schutz des Datenschutzes der Nutzer werden System-Traces in ProfilingManager entfernt, indem die CPU-Aktivität aller anderen Prozesse in einem einzigen OtherProcesses-Track zusammengefasst wird.
Anhand dieses kombinierten Tracks können Sie immer noch feststellen, ob die Langsamkeit Ihrer App durch einen internen Engpass oder die allgemeine Gerätelast verursacht wurde.
In Abbildung 2 sind die Hauptabschnitte eines bearbeiteten System-Trace hervorgehoben:

- CPU-Liste: Zeigt alle auf Ihrem Gerät verfügbaren Prozessoren an.
- CPU-Aufgaben: Zeigt, welche Threads von den einzelnen CPUs ausgeführt wurden.
- Ansicht „Andere Prozesse“: Zeigt die von anderen Prozessen verbrauchten CPU-Ressourcen an.
- Prozessansicht: Zeigt den Prozess Ihrer App an.
- Thread-Ansicht: Zeigt die Threads an, die in Ihrem Prozess ausgeführt werden, und deren Thread-Status (Ausführbar (R), Wird ausgeführt (R), Ruhezustand (S), Nicht unterbrechbarer Ruhezustand (D)), die direkt den Linux-Prozessstatus zugeordnet werden.
- Trace-Slices: In diesem Abschnitt werden Trace-Annotationen angezeigt, die von App-Entwicklern oder dem Framework hinzugefügt wurden. Diese Annotationen umfassen Berechnungen zwischen
Trace.beginSectionundTrace.endSection.
Weitere Informationen zur Perfetto-Benutzeroberfläche und zur Trace-Visualisierung finden Sie in der Perfetto-Dokumentation.
Java-Heap-Dumps visualisieren
Nachdem Sie einen Java-Heap-Dump mit PROFILING_TYPE_JAVA_HEAP_DUMP erfasst haben, öffnen Sie die resultierende .perfetto-java-heap-dump-Datei in der Perfetto-Benutzeroberfläche, um Speicherlecks zu identifizieren oder die Speichernutzung zu optimieren. Im Heapdump Explorer können Sie das Heap-Diagramm untersuchen, Flame-Diagramme der kumulativen Objektgrößen prüfen und Klassen, Objekte und Dominatoren durchsuchen, wie in Abbildung 3 dargestellt.
Unterschiede zwischen ProfilingManager-Heap-Dumps und HPROF-Dumps
Im Gegensatz zu standardmäßigen .hprof-Heap-Dumps (z. B. mit Debug.dumpHprofData oder in Android Studio erfassten) erfasst ProfilingManager einen Perfetto ART-Heap-Dump (.perfetto-java-heap-dump). Anstatt Rohspeicherinhalte zu sichern, zeichnet ProfilingManager die Objektbeibehaltungsgrafik und die Größenmetadaten auf, während die in Objekten gespeicherten Rohdaten weggelassen werden:
- Welche Daten werden erhoben?:
- Klassen und Typen: Klassennamen, Basisklassenhierarchien, Classloader, Instanzgrößen und Referenztypen (z. B. normale Klassen, Arrays, Strings oder schwache, weiche, Finalizer- und Phantomreferenzen).
- Objektinstanzen und -größen: Die flache Größe jedes Objekts (
self_size), seine Heap-Region (HEAP_TYPE_APP,HEAP_TYPE_ZYGOTEoderHEAP_TYPE_BOOT_IMAGE) und der zugehörige native Speicher, der überNativeAllocationRegistryregistriert wurde. - Referenzen und GC-Roots: Garbage-Collection-Roots (z. B. JNI-Globals und -Locals, Java-Stapelframes und Thread-Objekte) und Referenzketten auf Feldebene, die zeigen, welches Objekt ein anderes Objekt beibehält und über welchen Feldnamen.
- Größenmetadaten auswählen: Nicht vertrauliche Metadaten für bestimmte Framework-Typen, z. B.
Bitmap-Dimensionen (mWidthundmHeight).
- Was weggelassen wird: Tatsächliche primitive Feldwerte,
String-Zeicheninhalte und Roh-Array-Nutzlasten (byte[],char[]und andere primitive Arrays). Durch das Weglassen von Rohobjektinhalten wird der Datenschutz (für Nutzer) auf Produktionsgeräten geschützt und die Dump-Dateien bleiben deutlich kleiner.
Nächste Schritte
Neben der visuellen Prüfung in der Perfetto-Benutzeroberfläche können Sie Profile mit PerfettoSQL abfragen, Traces im Bulk analysieren oder Profile mit KI analysieren.