Uma ótima experiência do usuário é central para a missão do Android, e cumprir essa promessa requer manter os dispositivos rápidos, responsivos e confiáveis. É por isso que a otimização de memória é mais crítica do que nunca. No ecossistema, novos dispositivos estão mantendo ou até mesmo reduzindo sua capacidade de memória física em resposta ao aumento nos preços da memória, mas os usuários continuam esperando a mesma experiência de aplicativo fluida e de alto desempenho.
No Android 17, introduzimos limites de memória por aplicativo, começando com os dispositivos Pixel, para ajudar a proteger a experiência geral do usuário de aplicações que usam excesso de memória e causam lentidão no sistema. Nos próximos meses, um número crescente de fabricantes aproveitará os limites de memória por aplicativo do Android em sua linha de dispositivos com configurações de RAM de 4GB a 16GB+. Se seu aplicativo exceder esses limites, será desacelerado e pode ser encerrado. Otimizar o rastreamento de memória do seu aplicativo é essencial para prevenir a regulação do sistema operacional e manter uma experiência fluida do usuário.
Neste post, exploraremos como esses limites funcionam por baixo dos panos, como medir o rastreamento de memória usando novas métricas Android vitals e passos práticos para otimizar seu aplicativo ou jogo.
Entendendo os Limites de Memória
Quando seu aplicativo excede seu orçamento de memória, o Android toma medidas progressivas para proteger a responsividade do dispositivo:
- zRAM Swapping: Se seu aplicativo atingir seu limite atribuído, o sistema força as páginas do seu aplicativo em zRAM (memória RAM comprimida). Embora o zRAM evite a imediata exclusão de memória, comprimir e descomprimir páginas adiciona sobrecarga de CPU, o que pode resultar em lentidão visível na interface do usuário.
- Terminação do Processo: Se seu aplicativo continuar aumentando seu uso de memória além da barreira zRAM, será encerrado pelo sistema. Para determinar se a sessão do seu aplicativo foi impactada por essas restrições no campo, você pode chamar
getDescription()dentro deApplicationExitInfo. Se o sistema aplicou um limite, a razão de saída é relatada comoREASON_OTHERe a string da descrição conterá "MemoryLimiter:AnonSwap". Você também pode aproveitar o perfilamento baseado em gatilho usandoTRIGGER_TYPE_ANOMALYpara capturar automaticamente dump de pilha quando o limite de memória é atingido.
Para saber mais sobre os limites de memória por aplicativo e a execução do sistema, revise a documentação Android 17 App Memory Limits. Para testar seu aplicativo em diferentes configurações de dispositivo use os comandos adb do Memory Limiter.
Monitorando e Diagnosticando Problemas de Memória
Você não pode otimizar o que não consegue medir. Identificar vazamentos de memória, alocações excessivas da pilha e falhas Out-Of-Memory (OOM) em todo o ecossistema Android requer a utilização de ferramentas de monitoramento complementares:
- Saúde macro com Android vitals: Para visibilidade ampla e populacional sem custos adicionais, o Google Play Console’s Android vitals fornece métricas essenciais como Uso de Memória (RSS Anônimo + swap) e Uso de Memória de Bitmap. Isso fornece um panorama claro da distribuição de memória em diferentes estados de processo (primeiro plano, segundo plano, serviços percebidos pelo usuário e cacheados) e faixas de RAM classificadas, ajudando a identificar outliers de memória.
- Saída do Limite de Memória e rastreamento de OOM com Firebase Crashlytics: Para ficar informado sobre deterioração severa da memória antes que ela afete suas métricas-chave, a versão 20.1.0 do Crashlytics introduz dados de depuração adicionais para ajudar você a capturar, priorizar e corrigir exceções Out-Of-Memory (OOM) e mortes causadas pelo limite de memória. Rastrear esses eventos junto com logs personalizados e metadados-chave fornece contexto imediato sobre o status do processo quando uma falha de memória ocorre.
- Rastreamento em campo com ProfilingManager: Para equipes capazes de manter um quadro de observabilidade de desempenho, a API
ProfilingManagerintroduzida no Android 15 (API level 35) permite que seu aplicativo solicite e colete artefatos de depuração detalhados da memória diretamente dos dispositivos em produção. Você também pode disparar capturas de dump de heap com base em sinais específicos do sistema, comoTRIGGER_TYPE_OOMeTRIGGER_TYPE_ANOMALY.
Consulte nossa documentação para saber mais sobre outras técnicas de monitoramento de memória.
Sinopse e o que vem por aí
Com o Android ampliando os limites de memória do aplicativo em todas as classes de RAM, é hora de auditar seu rastro de memória:
- Priorize otimizações de memória: Previna que seu aplicativo seja afetado por limites de memória do aplicativo usando práticas recomendadas.
- Monitore o uso da memória: Monitore o comportamento de memória do seu aplicativo para detectar e resolver comportamentos anômalos.
- Otimize seu jogo: Siga as últimas orientações para jogos e aplicativos complexos de multimídia para maximizar a economia de memória em diferentes estados de processo.

