Android

Blog do Desenvolvedor Android: Preparando seu aplicativo para limites de memória mais amplos

O Android está introduzindo limites de memória por aplicativo em novos dispositivos para manter a experiência do usuário fluente, mesmo com menos capacidade de memória. Se um app exceder esses limites, poderá ser desacelerado ou encerrado pelo sistema. Desenvolvedores devem otimizar o uso da memória e monitorar o comportamento dos apps para evitar problemas.

Compartilhar
Android Developers Blog: Preparing your app for broader memory limits

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:

  1. 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.
  2. 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 de ApplicationExitInfo. Se o sistema aplicou um limite, a razão de saída é relatada como REASON_OTHER e a string da descrição conterá "MemoryLimiter:AnonSwap". Você também pode aproveitar o perfilamento baseado em gatilho usando TRIGGER_TYPE_ANOMALY para 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 ProfilingManager introduzida 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, como TRIGGER_TYPE_OOM e TRIGGER_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:

  1. Priorize otimizações de memória: Previna que seu aplicativo seja afetado por limites de memória do aplicativo usando práticas recomendadas.
  2. Monitore o uso da memória: Monitore o comportamento de memória do seu aplicativo para detectar e resolver comportamentos anômalos.
  3. 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.

Recursos úteis e referências

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa