LeakCanary para Kotlin: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

LeakCanary para Kotlin: guia completo com exemplos práticos

No desenvolvimento Android, o gerenciamento de memória é uma das tarefas mais críticas. Vazamentos de memória (memory leaks) ocorrem quando um objeto que não é mais necessário para o aplicativo continua sendo mantido na memória devido a referências implícitas. Isso leva ao aumento do consumo de memória, pausas frequentes do GC (Garbage Collection), lentidão e, por fim, ao OutOfMemoryError e à falha do aplicativo. O LeakCanary é uma biblioteca de código aberto da Square que detecta automaticamente vazamentos de memória em aplicativos Android escritos em Java e Kotlin.

Por que usar? Depurar vazamentos manualmente é um processo complexo e demorado, que exige um conhecimento profundo da JVM, análise de heap dumps e uso de profilers (Android Studio Profiler, MAT). O LeakCanary assume todo esse trabalho: ele monitora automaticamente o ciclo de vida de Activities, Fragments, ViewModels e outros componentes. Se algum deles não for coletado pelo garbage collector após ser destruído, a biblioteca cria um heap dump, analisa e gera um relatório completo com a cadeia exata de referências que causou o vazamento. Isso permite que os desenvolvedores encontrem e corrijam problemas rapidamente, sem perder horas em análises manuais.

O LeakCanary é integrado ao aplicativo como uma biblioteca e funciona em segundo plano. Ele não afeta a experiência do usuário, mas fornece ao desenvolvedor (em builds de debug) notificações e logs detalhados. A partir da versão 2.x, a biblioteca foi totalmente reescrita em Kotlin, tornando-se mais performática e fácil de usar. Ela oferece suporte aos mais recentes componentes de arquitetura do Android (Jetpack) e permite personalizar o processo de detecção de vazamentos.

Instalação

O LeakCanary é distribuído via Maven Central. Para instalar, adicione a dependência no arquivo build.gradle.kts (ou build.gradle) do seu módulo (app).

Importante: O LeakCanary é destinado apenas para builds de debug. Nunca o inclua na versão de release do aplicativo, pois isso pode impactar negativamente a performance e a segurança.

// build.gradle.kts (Module :app)
dependencies {
    // debugImplementation — a biblioteca estará disponível apenas em builds de debug
    debugImplementation("com.squareup.leakcanary:leakcanary-android:2.14")
    
    // Para suporte ao Jetpack Navigation (opcional)
    debugImplementation("com.squareup.leakcanary:leakcanary-android-navigation:2.14")
    
    // Para suporte ao Process Lifecycle (opcional)
    debugImplementation("com.squareup.leakcanary:leakcanary-android-process:2.14")
}

Após sincronizar o Gradle, o LeakCanary registrará automaticamente seu ContentProvider na inicialização do aplicativo. Nenhuma inicialização adicional no código é necessária.

Início rápido

O exemplo mínimo funcional é simplesmente instalar a biblioteca. Depois disso, o LeakCanary monitorará automaticamente os vazamentos.

1. Instale a biblioteca conforme descrito acima.

2. Execute o aplicativo em modo debug.

3. Realize uma ação que possa causar um vazamento (por exemplo, gire a tela se houver um vazamento de Activity).

4. Se um vazamento for detectado, você verá uma notificação do sistema:

Notificação do LeakCanary

5. Toque na notificação para abrir a tela com o relatório detalhado (Heap Dump Info).

Exemplo de código que cria um vazamento para teste:

// Exemplo de vazamento: referência estática para uma Activity
class LeakyActivity : AppCompatActivity() {
    companion object {
        // A referência estática impedirá que a Activity seja coletada pelo GC
        var leakedActivity: Activity? = null
    }

    override fun onCreate(savedInsta                    

Recommendations