Implementação do Jetpack Compose
Esta página inclui informações sobre como encontrar e acionar vazamentos de memória que são exclusivos de layouts baseados em visualizações. Para informações básicas sobre como capturar e analisar heap dumps, consulte Capturar um heap dump.
Encontrar vazamentos de memória
Para filtrar rapidamente as classes que podem estar associadas a vazamentos de memória, abra
o menu suspenso de classes e selecione Mostrar vazamentos de atividade/fragmento. O Android Studio
mostra classes que ele considera como vazamentos de memória para
instâncias de Activity e
Fragment no seu app. Os tipos
de dados mostrados pelo filtro incluem o seguinte:
- Instâncias de
Activityque foram destruídas, mas ainda estão sendo referenciadas. - Instâncias de
Fragmentque não têm umFragmentManagerválido, mas ainda estão sendo referenciadas.
O filtro pode gerar falsos positivos nas seguintes situações:
- Um
Fragmentfoi criado, mas ainda não foi usado. - Um
Fragmentestá sendo armazenado em cache, mas não como parte de umFragmentTransaction.
Para procurar vazamentos de memória de forma mais manual, navegue pelas listas de classes e instâncias para encontrar objetos com um Tamanho retido grande. Procure vazamentos de memória causados por:
- Referências prolongadas a
Activity,Context,View,Drawablee outros objetos que podem manter uma referência ao contêinerActivityouContext. - Classes internas não estáticas, como um
Runnable, que podem conter uma instânciaActivity. - Caches que armazenar objetos por mais tempo do que o necessário.
Quando encontrar possíveis vazamentos de memória, use as guias Campos e Referências em Detalhes da instância para acessar a instância ou a linha de código-fonte de interesse.
Acionar vazamentos de memória para teste
Para provocar vazamentos de memória e testar seu app, use um dos seguintes métodos:
- Gire o dispositivo da orientação retrato para paisagem e vice-versa várias vezes
em diferentes estados de atividade. Muitas vezes, a rotação do dispositivo pode fazer com que o app vaze um objeto
Activity,ContextouViewporque o sistema recria oActivitye, se o app mantiver uma referência a um desses objetos em outro lugar, o sistema não conseguirá eliminá-lo por meio da coleta de lixo. - Alterne entre seu app e outro app em diferentes estados de atividade. Por exemplo, navegue até a tela inicial e volte para o app.