how fix memory leak android apps using ddms tool
Como testar e corrigir vazamento de memória para aplicativos Android:
A otimização de memória é um desafio maior para qualquer desenvolvedor antes de enviar um aplicativo para a Play Store.
qa ou ba o que é melhor
O desempenho de um aplicativo é tão importante quanto sua funcionalidade. Este artigo é baseado no Análise de heap de uma aplicação através de DDMS (Dalvik Debug Monitor Service).
A maioria dos aplicativos Android são executados em JAVA e também apresentam problemas de threading.
Nota importante - A ferramenta Dalvik Debug Monitor Server (DDMS) está disponível apenas no Android Studio 3.0 e versões inferiores. Se você estiver usando o Studio 3.0 e superior, certifique-se de usar o Android Profiler para criar o perfil de CPU, memória e uso de rede do seu app.
Este tutorial ajudará você a entender e otimizar o vazamento de memória para um aplicativo Android usando a ferramenta DDMS. Analisar a memória dará uma ideia da memória e otimizar os valores da memória resultará em menos vazamento de memória.
O que você aprenderá:
- Termos comumente usados
- DDMS (Dalvik Debug Monitor Server)
- Passos para lançar DDMS via ADT
- Etapas para iniciar o DDMS por meio do Android Studio
- Conclusão
- Leitura recomendada
Termos comumente usados
Listados abaixo estão alguns dos termos comuns que usaremos neste projeto:
- Heap - É a memória Runtime que está disponível para alocação e é distribuída dinamicamente. Depende da plataforma.
- Pilha dalvik - O heap Dalvik é uma combinação de classes e dados por zigoto.
- Zigoto - Zygote ajuda a iniciar processos de aplicativos quando o sistema é carregado.
- PSS - É a contagem de páginas na memória para um processo e é medida em KB.
- Coleta de lixo - A coleta de lixo rastreia todos os objetos que ainda são usados e marca o resto como Lixo.
DDMS (Dalvik Debug Monitor Server)
Esta é a ferramenta que ajuda a analisar o monitoramento de desempenho em tempo de execução. Também ajuda na criação de perfil e ajuste de aplicativos.
Principais Serviços oferecidos por DDMS
- Estatísticas de alocações de objetos Heap totais
- Estática de thread de aplicativo
- Captura de tela do dispositivo
- Explorador de arquivos do dispositivo
- Inspeção de chamadas recebidas e SMS
- Inspeção de dados de localização
- Console estático de rede
- Logcat (Verbose, Debug, Assert, Error)
Vazamento de memória:
Um aplicativo mantém um objeto por um longo tempo, mesmo depois de servir ao propósito e este objeto não é coletado pelo GC.
Detecção de vazamento de memória:
Geralmente, o aplicativo Android mostra uma caixa de diálogo pop-up para um aplicativo que não está respondendo ou, no pior dos casos, exceção de memória insuficiente. Cada dispositivo tem tamanho de heap limitado e quando um aplicativo tenta obter memória adicional, exceções são observadas.
Para verificar o tamanho total do heap de um dispositivo Android, podemos usar os comandos abaixo:
- cat / proc / meminfo | grep MemTotal
- adb –d pull /system/build.prop
Passos para lançar DDMS via ADT
Passo 1: Lance o pacote adt (facilmente disponível Aqui ) Ou instale o pacote ADT para configuração do Windows usando os links abaixo.
windows 32: https://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip
windows 64: https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
Passo 2: Clique no SDK
Etapa 3: Clique nas ferramentas
Passo 4: Clique em monitor.bat (DDMS)
Observação: Para análise de heap, é necessário depurar apk.
Após a instalação bem-sucedida do pacote ADT, vá para o prompt de comando (defina o caminho, se o adb não for reconhecido como um comando interno ou externo).
Verifique se o dispositivo está conectado a um sistema por meio do comando adb (dispositivos adb). Depois que um dispositivo é conectado, ele é conectado à tela DDMS com o nome do pacote de um aplicativo.
Etapas para iniciar o DDMS por meio do Android Studio
Studio -> Ferramentas -> Android -> Monitor do dispositivo Android -> Clique no botão DDMS no Menu.
Passos para a análise de um heap
- Selecione o nome do pacote de um aplicativo que está aparecendo na tela DDMS.
- Selecione o ícone de atualização de heap.
- Toque na causa GC antes de tomar valores para cada ação.
- Agora, no prompt de comando, execute o comando - adb shell dumpsys meminfo e pressione Enter.
- Os valores aparecerão no prompt de comando.
- PSS total, nativo, dalvik, tamanho de heap, heap livre, heap alocado são os valores que ajudarão os desenvolvedores a depurar as falhas de memória.
- Uma melhor representação dos dados tornará o trabalho mais fácil para um desenvolvedor.
- Os dados devem ser assim:
- Valor dos objetos após clicar em causa GC.
- PSS total
- Tamanho de heap nativo
- Dálvik heap - tamanho do heap
- Total do tamanho do heap
- Heap nativa - alocação heap
- Dalvik heap- heap aloc
- Total de alocação de heap
- Heap nativo - heap livre
- Dalvik heap - heap livre
- Total de heap livre
- Objetos (depois de clicar em causar GC do DDMS)
- % used% free
Teste ideal: Para uma melhor análise do aplicativo, tente realizar diferentes cenários mantendo um aplicativo em segundo plano e, ao chegar na mesma página, execute um fluxo completo desses cenários comumente usados.
Tente usar dispositivos mais simples, pois a falha mais comum é observada por causa da memória que é exceção de falta de memória (OOM).
Tela DDMS
Amostras de valores Dalvik
Conclusão
Este artigo pode ser usado para testar a análise de heap usando a ferramenta DDMS. Valores corretos para os parâmetros ajudarão os desenvolvedores do Android a otimizar a memória.
O conhecimento de ferramentas de teste é bom, mas usar essas ferramentas de forma eficiente é considerado uma arte.
Aprendizagem feliz !!
Leitura recomendada
- Tutorial da Appium para testar aplicativos móveis Android e iOS
- Mais de 20 ferramentas de detecção de vazamento de memória para Java, C ++ no Linux e Windows
- Como automatizar aplicativos Android usando a ferramenta TestComplete
- Introdução ao Robotium - a ferramenta de teste de IU de aplicativo Android mais popular
- 10 melhores aplicativos de gerenciamento de projeto em 2021 para dispositivos Android e iOS
- Tutorial de teste de interface do usuário móvel (teste de GUI de aplicativos iOS e Android)
- Crie testes de Appium para um aplicativo Android
- 10 MELHORES aplicativos de rastreamento de tempo para freelancers (2021 SELETIVO)