Leak Canary: Como encontrar memory leaks no desenvolvimento Android

Italo Melo
2 min readFeb 14, 2024

--

English Version

Introdução

No mundo do desenvolvimento móvel, velocidade é fundamental, mas às vezes memory leaks nos atrapalham. Neste breve artigo, vamos aprender a detectar e corrigir esses vazamentos com uma ferramenta chamada Leak Canary. É como ter um detetive para a memória do seu aplicativo. Utilizando a biblioteca ao nosso lado, vamos descobrir esses problemas de memória ocultos e corrigi-los rapidamente. Então, prepare-se, vamos fazer nossos aplicativos rodarem liso como manteiga!

O que é um Memory Leak?

Um Memory Leak (vazamento de memória) ocorre quando um programa não libera memória que não é mais necessária, fazendo com que a memória não utilizada se acumule ao longo do tempo. Isso pode resultar em problemas de desempenho, falhas e uso ineficiente de recursos do sistema, impactando a estabilidade e responsividade do aplicativo.

Adicionando o LeakCanary em um projeto

O LeakCanary, desenvolvido pela Square, detecta automaticamente vazamentos de diversos objetos, incluindo instâncias de Activity destruídas, instâncias de Fragment, instâncias de View, instâncias de ViewModel e instâncias de Service destruídas. Basta adicionar a implementação de debug ao arquivo de dependências para utilizar sua funcionalidade. Por exemplo:

debugImplementation 'com.squareup.leakcanary:leakcanary-android:3.0-alpha-1'

Quando seu aplicativo estiver em execução, certifique-se de que as notificações estejam habilitadas para o LeakCanary indicar qualquer vazamento de memória. Se um vazamento for detectado, ele será exibido no seguinte formato:

Alerta de notificação do LeakCanary

Ao clicar na notificação, é revelada uma visualização detalhada do vazamento e sua localização. Aqui está um exemplo de um aplicativo que eu criei, salvando o context em uma variável estática. Isso poderia causar falhas e vazamentos de memória.

Tela de lista de leaks do LeakCanary
Tela de informações detalhadas do LeakCanary

Conclusão

Integrar o LeakCanary ao seu projeto é crucial para manter a estabilidade e o desempenho do aplicativo. Ele detecta automaticamente vazamentos de memória, incluindo aqueles em componentes críticos como Activities, Fragments, etc. A detecção previne a acumulação de memória, falhas e lentidão. Com relatórios detalhados de vazamento, identificar e corrigir problemas se torna eficiente, garantindo uma experiência de usuário suave.

--

--