A memória é um recurso valioso em qualquer ambiente de desenvolvimento de software, mas é ainda mais importante em um sistema operacional móvel em que a memória física costuma ser restrita. Isso vale principalmente para dispositivos nativos com pouca memória, que são, com frequência, Android (versão Go). Existem algumas maneiras de otimizar a memória do app para que ele seja executado sem problemas nesses ambientes.
Práticas recomendadas
Liberar memória em cache
Talvez você não tenha memória suficiente para manter os processos em segundo plano como
faria em um ambiente comum. Nesse caso, use
onTrimMemory()
para remover o que é desnecessário do processo do app. Para identificar
melhor o nível de remoção necessário, use
ActivityManager.getMyMemoryState(RunningAppProcessInfo)
e otimize ou elimine recursos desnecessários. Por exemplo, você pode diminuir
o uso da memória em
expressões, pesquisas, cache de visualização ou extensões abertas para reduzir o número de
vezes que o app apresenta falhas ou ANRs devido à pouca memória.
Agendamento de tarefas
O agendamento de tarefas simultâneas pode fazer com que várias operações com alto consumo de memória sejam executadas em paralelo, levando à concorrência por recursos que excedem o pico de uso da memória de um app. Aloque recursos da forma correta, separando processos entre tarefas intensivas de CPU e de baixa latência no pool de linhas de execução adequado para executar em dispositivos que enfrentam várias restrições de recursos.
Vazamentos de memória
Várias ferramentas, como o Memory Profiler no Android Studio e o Perfetto (link em inglês) estão disponíveis especificamente para encontrar e reduzir vazamentos de memória no seu app. Recomendamos que você use essas ferramentas para identificar e corrigir possíveis problemas de memória que permitam que outros componentes do app sejam executados sem colocar mais pressão no sistema.
Outras dicas
- Imagens ou drawables grandes consomem mais memória em apps. Identifique e otimize bitmaps grandes ou coloridos para reduzir o uso da memória.
- Evite usar GIFs ao criar apps Android (versão Go), já que eles consomem muita memória.
- É possível reduzir o tamanho dos arquivos PNG sem perder a qualidade da imagem usando ferramentas como WebP, pngcrush e pngquant. Todas essas ferramentas podem reduzir o tamanho do arquivo PNG e preservar a qualidade perceptiva da imagem.
- A ferramenta aapt pode otimizar os recursos de imagem colocados em
res/drawable/
com compactação sem perdas durante o processo de compilação. Por exemplo, a ferramenta aapt pode converter um PNG de cores verdadeiras que não exige mais de 256 cores em um PNG de 8 bits com uma paleta de cores. Assim, a imagem continua com a mesma qualidade, mas consome menos memória.