Dopo aver recuperato un profilo da un dispositivo di test o averlo scaricato dal tuo backend, puoi aprire il file nella UI di Perfetto per ispezionare le cronologie, gli stati dei thread e i grafici di conservazione della memoria. In questa pagina viene descritto come navigare tra i tracciamenti del sistema oscurati e i dump dell'heap Java acquisiti con ProfilingManager.
Visualizza il tracciamento del sistema
Apri il file .perfetto-trace nella UI di Perfetto per ispezionare l'attività della CPU e dei thread nel tempo.
Per proteggere la privacy degli utenti, ProfilingManager oscura i tracciamenti del sistema combinando l'attività della CPU di tutti gli altri processi in un'unica traccia OtherProcesses.
L'ispezione di questa traccia combinata ti consente comunque di determinare se la lentezza della tua app è stata causata da un collo di bottiglia interno o dal carico complessivo del dispositivo.
La Figura 2 evidenzia le sezioni principali di un tracciamento del sistema oscurato:
- Elenco CPU: mostra tutti i processori disponibili sul dispositivo.
- Attività della CPU: mostra i thread eseguiti da ogni CPU.
- Visualizzazione Altri processi: mostra le risorse della CPU utilizzate da altri processi.
- Visualizzazione processo: mostra il processo della tua app.
- Visualizzazione thread: mostra i thread in esecuzione all'interno del processo e i relativi stati (Eseguibile (R), In esecuzione (R), In pausa (S), In pausa non interrompibile (D)), che vengono mappati direttamente agli stati dei processi Linux.
- Sezioni di traccia: questa sezione mostra le annotazioni di traccia aggiunte dagli sviluppatori di app o dal framework. Queste annotazioni comprendono i calcoli tra
Trace.beginSectioneTrace.endSection.
Per ulteriori informazioni sulla UI di Perfetto e sulla visualizzazione delle tracce, consulta la documentazione di Perfetto.
Visualizza i dump dell'heap Java
Dopo aver acquisito un dump dell'heap Java utilizzando PROFILING_TYPE_JAVA_HEAP_DUMP, apri il file .perfetto-java-heap-dump risultante nella UI di Perfetto per identificare le perdite di memoria o ottimizzare la memoria utilizzata. In Heapdump Explorer,
puoi esplorare il grafico dell'heap, ispezionare i grafici a fiamme delle dimensioni cumulative degli oggetti
e sfogliare classi, oggetti e dominatori, come mostrato nella Figura 3.
Differenze tra i dump dell'heap di ProfilingManager e i dump HPROF
A differenza degli heap dump .hprof standard (come quelli acquisiti con
Debug.dumpHprofData o in Android Studio), ProfilingManager acquisisce un
heap dump Perfetto ART (.perfetto-java-heap-dump). Anziché eseguire il dump
dei contenuti della memoria non elaborata, ProfilingManager registra il grafico di conservazione degli oggetti e
i metadati di dimensionamento, omettendo i dati non elaborati archiviati all'interno degli oggetti:
- Dati raccolti:
- Classi e tipi: nomi delle classi, gerarchie delle superclassi, classloader, dimensioni delle istanze e tipi di riferimento (ad esempio classi normali, array, stringhe o riferimenti deboli, soft, finalizer e phantom).
- Istanze e dimensioni degli oggetti: la dimensione di base di ogni oggetto (
self_size), la relativa regione heap (HEAP_TYPE_APP,HEAP_TYPE_ZYGOTEoHEAP_TYPE_BOOT_IMAGE) e la memoria nativa associata registrata tramiteNativeAllocationRegistry. - Riferimenti e radici GC: radici di garbage collection (come variabili globali e locali JNI, frame dello stack Java e oggetti thread) e catene di riferimenti a livello di campo che mostrano quale oggetto conserva un altro oggetto e tramite quale nome di campo.
- Seleziona i metadati di dimensionamento: metadati non sensibili per tipi di framework specifici, come le dimensioni di
Bitmap(mWidthemHeight).
- Elementi omessi: valori effettivi dei campi primitivi, contenuti dei caratteri
Stringe payload degli array non elaborati (byte[],char[]e altri array primitivi). L'omissione dei contenuti degli oggetti non elaborati protegge la privacy degli utenti sui dispositivi di produzione e mantiene i file di dump notevolmente più piccoli.
Passaggi successivi
Oltre all'ispezione visiva nell'interfaccia utente di Perfetto, puoi eseguire query sui profili con PerfettoSQL, analizzare le tracce in blocco o analizzare i profili con l'AI.