Quanto mais tempo o jogo fica aberto, mais memória ele usa; vai ficando lento e, no fim, é fechado à força.
Por quê Texturas, UI e efeitos não são liberados nas trocas de mapa → Efeito O GC roda com mais frequência e, com pouca memória no SO, começa o swap → Na tela Depois de algumas horas de jogo, os engasgos vão aumentando até o encerramento forçado (para o jogador, parece uma desconexão)
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Medir o uso de memória nas trocas de mapa, encontrar e corrigir texturas, UI e efeitos que não são liberados, fazer testes automatizados de longa duração (soak tests).
No gráfico
Subida lenta · Memória do processo do jogo
Onde olhar
Registrar Process(jogo)\Private Bytes no Monitor de Desempenho por algumas horas. No mobile, o motivo de encerramento no ApplicationExitInfo do Android (REASON_LOW_MEMORY) e os relatórios de jetsam do iOS
Confirma se
A memória sobe a cada troca de mapa e não volta a cair, e engasgos e encerramentos forçados aumentam quanto mais tempo o jogo fica aberto
Descarta se
Memória estável, e só o tremor piora quanto mais tempo o jogo fica aberto: “Perda de precisão do tempo em float”
Como verificar
Verificação no ambiente do jogador
Saiba mais
Celulares costumam aguentar comprimindo a memória. Se mesmo assim faltar memória, o SO fecha o jogo na hora (o jogador cai do jogo). Quanto menos RAM o aparelho tem, mais cedo isso acontece.
Fontes
Memory allocation among processesAndroid (Google) O Android aguenta comprimindo a memória em zRAM e, quando ela acaba, o low memory killer encerra processos; quando o app em primeiro plano é encerrado, parece um crash
ApplicationExitInfoAndroid (Google) REASON_LOW_MEMORY: o low memory killer do sistema encerrou o processo do app (aparelhos sem suporte informam REASON_SIGNALED com SIGKILL)