Implementazione di Jetpack Compose
Questa pagina include informazioni su come trovare e attivare perdite di memoria specifiche per i layout basati su View. Per le informazioni di base sull'acquisizione e l'analisi dei dump dell'heap, vedi Acquisire un dump dell'heap.
Trovare perdite di memoria
Per filtrare rapidamente i corsi che potrebbero essere associati a perdite di memoria, apri
il menu a discesa dei corsi e seleziona Mostra perdite di attività/frammenti. Android Studio
mostra le classi che ritiene indichino perdite di memoria per
le istanze Activity e
Fragment nella tua app. I tipi
di dati mostrati dal filtro includono quanto segue:
- Istanze
Activityche sono state eliminate ma a cui viene ancora fatto riferimento. - Istanze
Fragmentche non hanno unFragmentManagervalido, ma a cui viene comunque fatto riferimento.
Tieni presente che il filtro potrebbe generare falsi positivi nelle seguenti situazioni:
- Viene creato un
Fragment, ma non è ancora stato utilizzato. - Un
Fragmentviene memorizzato nella cache, ma non come parte di unFragmentTransaction.
Per cercare perdite di memoria in modo più manuale, sfoglia gli elenchi di classi e istanze per trovare oggetti con un valore elevato di Dimensioni mantenute. Cerca perdite di memoria causate da uno dei seguenti elementi:
- Riferimenti di lunga durata a
Activity,Context,View,Drawablee altri oggetti che potrebbero contenere un riferimento al contenitoreActivityoContext. - Classi interne non statiche, ad esempio un
Runnable, che possono contenere un'istanzaActivity. - Cache che conservano gli oggetti più a lungo del necessario.
Quando trovi potenziali perdite di memoria, utilizza le schede Campi e Riferimenti in Dettagli istanza per passare all'istanza o alla riga di codice sorgente di interesse.
Attivare perdite di memoria per i test
Per provocare perdite di memoria da testare nella tua app, puoi attivarle in uno dei seguenti modi:
- Ruota il dispositivo dalla modalità verticale a quella orizzontale e viceversa più volte
in diversi stati di attività. La rotazione del dispositivo può spesso causare la perdita di un oggetto
Activity,ContextoViewda parte di un'app perché il sistema ricrea l'Activitye, se la tua app contiene un riferimento a uno di questi oggetti altrove, il sistema non può raccoglierlo. - Passare da un'app a un'altra in diversi stati di attività. Ad esempio, vai alla schermata Home, quindi torna all'app.