Criei este tópico na intenção de conscientizar o usuário no que diz respeito à como o Android usa e gerencia sua memória RAM.
Estrutura:
I - Funcionamento
II - RAM e o desempenho
III - Observação
IV - Resumo
Aparelho referência: Nexus 5, Android 6.0.1 MMB29V
Android NÃO é Windows. O Android foi concebido para trabalhar sempre com a memória RAM carregada de apps. Estes apps carregados na memória ficam num estado congelado, ou seja, não gastam bateria, e o fato deles estarem na memória não consome energia alguma.
Por quê é assim?
Simples, este é um meio de economizar bateria, e trazer uma experiência superior de multi-tarefa.
A economia de energia se dá pelo fato dos aplicativos já estarem carregados na memória RAM. Quando o usuário opta por usar algum app, ele apenas sai do segundo plano e é trazido para o primeiro. A demanda de energia necessária pra alternar um aplicativo do segundo pro primeiro plano, e vice-versa, é muito menor do que para carregar um aplicativo do zero.
A melhora na multi-tarefa se dá pelo fato dos aplicativos já estarem "abertos". Ou seja, a alternância entre os apps é praticamente instantânea.
No Android, a memória RAM é ocupada de 3 formas:
- (1) SISTEMA
- (2) SERVIÇOS
- (3) PROCESSOS (ASSOCIADOS À UM SERVIÇO)
- (4) PROCESSOS (EM CACHE)
Esta é a parcela que o próprio Android usa para rodar. Normalmente o valor flutua entre 400 e 600mb, no Android "puro". (estes valores são mensuráveis apenas do Android 5.0 em diante)
O (1) SISTEMA tem prioridade máxima na memória, ou seja, se ele precisar de mais espaço, ele vai encerrar (3) PROCESSOS EM CACHE, e por conseguinte os (2) SERVIÇOS e (3) PROCESSOS ASSOCIADOS À UM SERVIÇO para abrir espaço para sí próprio.
(Screenshot 1)
No Screenshot 1 (acima), nota-se que o (1) SISTEMA está ocupando 500mb da RAM, dos 1.800mb disponíveis.
Este é fácil de explicar: enquanto você joga, ou assiste um vídeo no YouTube, você continua recebendo mensagens no WhatsApp ou Telegram, ou até mesmo e-mail, correto? Mas como pode, visto que você está usando um outro aplicativo?
Simples: há apps que emitem um (2) SERVIÇO. Esta condição os faz ficar retido na memória, para que por exemplo o WhatsApp sempre receba mensagens, mesmo que você não esteja com o aplicativo aberto.
O (2) SERVIÇO em sí não gasta bateria, ele é apenas um instrumento usado para invocar um (3) PROCESSO de determinado aplicativo para cumprir determinada tarefa, como por exemplo, enviar/receber mensagens.
(screenshot 1)
Logo abaixo de "Uso de RAM por apps", estão listados os (2) SERVIÇOS que estão sendo executados no momento. Um (2) SERVIÇO pode ficar rodando de forma permanente, como o WhatsApp, ou surge conforme você usa o aplicativo, como por exemplo o Spotify. Após parar de usar o app, o (2) SERVIÇO é encerrado, junto do (3) PROCESSO associado.
A soma do espaço ocupado pelos (2) PROCESSOS ASSOCIADOS (visto que o (1) SERVIÇO em sí não faz nada por sí só) é mostrada logo abaixo de (1) SISTEMA, e é indicada pela porção verde da barrinha. No caso do screenshot 1, os (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS estão ocupando 458mb.
Os (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS tem prioridade na memória RAM sobre os (4) PROCESSOS em cache. Ou seja, antes de um (1) SERVIÇO e seu processo associado ser encerrado, todos os (4) PROCESSOS em cache serão encerrados antes para abrir espaço. Os (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS só são encerrados caso o (1) SISTEMA precise de mais espaço.
O processo de um app é a parte com a qual você interage diretamente, de grosso modo. Por exemplo, enquanto você troca mensagens no WhatApp, você está executando o processo do Whatsapp. Navegando no Chrome? Então está executando o processo do app Chrome.
Conforme explicado no início do post, o Android é feito de forma que fiquem em cache (ou seja, congelados na memória RAM) o máximo de processos possível, para agilizar a alterância entre apps e otimizar o uso de energia.
PS: O Android nunca ocupa totalmente a memória com (4) PROCESSOS em cache. Ele sempre deixa pelo menos 150-200mb para caso algum app cresça rapidamente, e precise de mais espaço de forma instantânea.
(Screenshot 2)
No screenshot 2, nota-se que os (4) PROCESSOS em cache somam 691mb de espaço usado na memória RAM. Todos os apps litados abaixo estão congelados e serão retomados imediatamente ao abrí-los. Este é um cenário ideal, e quanto maior for o cache, melhor.
O cache tem prioridade mínima, ou seja, eles serão encerrados caso o (1) SISTEMA ou (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS precisem de mais espaço. E é óbvio que os apps em cache vão variar conforme o tempo, normalmente os últimos apps usados ficam no cache, até que sejam abertos novos apps.
A memória RAM e seu gerenciamento são os quesitos mais importantes no desempenho e usabilidade do seu aparelho. Via de regra, quanto mais memória RAM = melhor, pois o sistema conseguirá manter mais aplicativos em (4) cache, e você irá alternar entre todos de forma instantânea e usando pouquíssima energia.
Sendo assim, a única forma de melhorar a performance de um aparelho no que diz respeito à multi-tarefa e responsividade, é dimiuir o número de (2) SERVIÇOS rodando. Como dito acima, nem todos os apps geram serviço, apenas aqueles que precisam ficar o tempo todo buscando conteúdo, como mensageiros, apps de e-mail, redes sociais, etc.
Infelizmente, os aparelhos de fabricantes como Samsung, LG, Asus tem uma quantidade enorme de serviços rodando, de fábrica. Enquanto um Nexus 5 vem com 4 serviços rodando (Configurações, com.qualcomm.qcrilmsgtunnel, Serviços do Google, Play Services, pois o restante são apps instalados a parte).
Logicamente, percebemos que quando falam que Android puro é mais rápido, não é por acaso.
Quando o assunto é memória, não se pode deixar de fazer uma menção ao LMK (Low Memory Killer). Resumindo, é um parâmetro do sistema aonde o desenvolvedor determina as situações aonde o sistema deve fechar processos em cache para dar lugar à um outro. O LMK pode ser agressivo, ou permissivo, dependendo da vontade do desenvovledor da ROM.
Isto explica o por que do gerenciamento de memória dos Galaxy S6, que se mostraram muito aquém nos testes, ou seja, não estavam segurando apps no cache como era esperado, para aparelhos com 3, 4GB de RAM. A Samsung alterou os parâmetros padrões do Google, e com isso, o sistema teve uma perda considerável de desempenho.
Exemplos:
Para saber mais sobre o LMK, este artigo do XDA explica muito bem: http://www.xda-developers.com/fix-for-galaxy-s6-memory-issues/
Segue abaixo um comparativo de uso de RAM de alguns aparelhos, para demonstrar o quanto as fabricantes adicionam "peso" ao sistema, comparado ao Android puro.
Isso serve também pra mostrar que os apps "abertos" naquela tela de multi-tarefa (chamado no Android de "Apps recentes") não necessariamente estão abertos. Só estão de fato "abertos" os que aparecerem no screenshot 1 e 2.
E, mesmo que estejam em cache, eles estão CONGELADOS, ou seja, não gastam bateria.
Portanto, PAREM de "fechar" os apps recentes de forma obsessiva, pois o Android vai carrega-los novamente no cache. Você só vai gastar mais bateria fazendo isso, além de diminuir a velocidade do sistema.
Estrutura:
I - Funcionamento
II - RAM e o desempenho
III - Observação
IV - Resumo
Aparelho referência: Nexus 5, Android 6.0.1 MMB29V
I - FUNCIONAMENTO
Android NÃO é Windows. O Android foi concebido para trabalhar sempre com a memória RAM carregada de apps. Estes apps carregados na memória ficam num estado congelado, ou seja, não gastam bateria, e o fato deles estarem na memória não consome energia alguma.
Por quê é assim?
Simples, este é um meio de economizar bateria, e trazer uma experiência superior de multi-tarefa.
A economia de energia se dá pelo fato dos aplicativos já estarem carregados na memória RAM. Quando o usuário opta por usar algum app, ele apenas sai do segundo plano e é trazido para o primeiro. A demanda de energia necessária pra alternar um aplicativo do segundo pro primeiro plano, e vice-versa, é muito menor do que para carregar um aplicativo do zero.
A melhora na multi-tarefa se dá pelo fato dos aplicativos já estarem "abertos". Ou seja, a alternância entre os apps é praticamente instantânea.
No Android, a memória RAM é ocupada de 3 formas:
- (1) SISTEMA
- (2) SERVIÇOS
- (3) PROCESSOS (ASSOCIADOS À UM SERVIÇO)
- (4) PROCESSOS (EM CACHE)
(1) SISTEMA
Esta é a parcela que o próprio Android usa para rodar. Normalmente o valor flutua entre 400 e 600mb, no Android "puro". (estes valores são mensuráveis apenas do Android 5.0 em diante)
O (1) SISTEMA tem prioridade máxima na memória, ou seja, se ele precisar de mais espaço, ele vai encerrar (3) PROCESSOS EM CACHE, e por conseguinte os (2) SERVIÇOS e (3) PROCESSOS ASSOCIADOS À UM SERVIÇO para abrir espaço para sí próprio.
(Screenshot 1)
No Screenshot 1 (acima), nota-se que o (1) SISTEMA está ocupando 500mb da RAM, dos 1.800mb disponíveis.
(2) SERVIÇOS / (3) PROCESSOS ASSOCIADOS
Este é fácil de explicar: enquanto você joga, ou assiste um vídeo no YouTube, você continua recebendo mensagens no WhatsApp ou Telegram, ou até mesmo e-mail, correto? Mas como pode, visto que você está usando um outro aplicativo?
Simples: há apps que emitem um (2) SERVIÇO. Esta condição os faz ficar retido na memória, para que por exemplo o WhatsApp sempre receba mensagens, mesmo que você não esteja com o aplicativo aberto.
O (2) SERVIÇO em sí não gasta bateria, ele é apenas um instrumento usado para invocar um (3) PROCESSO de determinado aplicativo para cumprir determinada tarefa, como por exemplo, enviar/receber mensagens.
Como podem ver, o WhatsApp mantém ativo um (2) SERVIÇO (MessageService) que invoca o (3) PROCESSO WhatsApp, que trabalha em segundo plano para enviar/receber suas mensagens.
Um (2) SERVIÇO pode invocar mais de um (3) PROCESSO, dependendo de sua necessidade.
Um (2) SERVIÇO pode invocar mais de um (3) PROCESSO, dependendo de sua necessidade.
(screenshot 1)
Logo abaixo de "Uso de RAM por apps", estão listados os (2) SERVIÇOS que estão sendo executados no momento. Um (2) SERVIÇO pode ficar rodando de forma permanente, como o WhatsApp, ou surge conforme você usa o aplicativo, como por exemplo o Spotify. Após parar de usar o app, o (2) SERVIÇO é encerrado, junto do (3) PROCESSO associado.
A soma do espaço ocupado pelos (2) PROCESSOS ASSOCIADOS (visto que o (1) SERVIÇO em sí não faz nada por sí só) é mostrada logo abaixo de (1) SISTEMA, e é indicada pela porção verde da barrinha. No caso do screenshot 1, os (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS estão ocupando 458mb.
Os (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS tem prioridade na memória RAM sobre os (4) PROCESSOS em cache. Ou seja, antes de um (1) SERVIÇO e seu processo associado ser encerrado, todos os (4) PROCESSOS em cache serão encerrados antes para abrir espaço. Os (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS só são encerrados caso o (1) SISTEMA precise de mais espaço.
(4) PROCESSOS em cache
O processo de um app é a parte com a qual você interage diretamente, de grosso modo. Por exemplo, enquanto você troca mensagens no WhatApp, você está executando o processo do Whatsapp. Navegando no Chrome? Então está executando o processo do app Chrome.
Conforme explicado no início do post, o Android é feito de forma que fiquem em cache (ou seja, congelados na memória RAM) o máximo de processos possível, para agilizar a alterância entre apps e otimizar o uso de energia.
PS: O Android nunca ocupa totalmente a memória com (4) PROCESSOS em cache. Ele sempre deixa pelo menos 150-200mb para caso algum app cresça rapidamente, e precise de mais espaço de forma instantânea.
(Screenshot 2)
No screenshot 2, nota-se que os (4) PROCESSOS em cache somam 691mb de espaço usado na memória RAM. Todos os apps litados abaixo estão congelados e serão retomados imediatamente ao abrí-los. Este é um cenário ideal, e quanto maior for o cache, melhor.
O cache tem prioridade mínima, ou seja, eles serão encerrados caso o (1) SISTEMA ou (2) SERVIÇOS + (3) PROCESSOS ASSOCIADOS precisem de mais espaço. E é óbvio que os apps em cache vão variar conforme o tempo, normalmente os últimos apps usados ficam no cache, até que sejam abertos novos apps.
II - RAM E O DESEMPENHO
A memória RAM e seu gerenciamento são os quesitos mais importantes no desempenho e usabilidade do seu aparelho. Via de regra, quanto mais memória RAM = melhor, pois o sistema conseguirá manter mais aplicativos em (4) cache, e você irá alternar entre todos de forma instantânea e usando pouquíssima energia.
Sendo assim, a única forma de melhorar a performance de um aparelho no que diz respeito à multi-tarefa e responsividade, é dimiuir o número de (2) SERVIÇOS rodando. Como dito acima, nem todos os apps geram serviço, apenas aqueles que precisam ficar o tempo todo buscando conteúdo, como mensageiros, apps de e-mail, redes sociais, etc.
Infelizmente, os aparelhos de fabricantes como Samsung, LG, Asus tem uma quantidade enorme de serviços rodando, de fábrica. Enquanto um Nexus 5 vem com 4 serviços rodando (Configurações, com.qualcomm.qcrilmsgtunnel, Serviços do Google, Play Services, pois o restante são apps instalados a parte).
Logicamente, percebemos que quando falam que Android puro é mais rápido, não é por acaso.
Quando o assunto é memória, não se pode deixar de fazer uma menção ao LMK (Low Memory Killer). Resumindo, é um parâmetro do sistema aonde o desenvolvedor determina as situações aonde o sistema deve fechar processos em cache para dar lugar à um outro. O LMK pode ser agressivo, ou permissivo, dependendo da vontade do desenvovledor da ROM.
Isto explica o por que do gerenciamento de memória dos Galaxy S6, que se mostraram muito aquém nos testes, ou seja, não estavam segurando apps no cache como era esperado, para aparelhos com 3, 4GB de RAM. A Samsung alterou os parâmetros padrões do Google, e com isso, o sistema teve uma perda considerável de desempenho.
Exemplos:
Neste teste, o Galaxy Note 5 mostra que seus 4GB de RAM não saem vantajosos frente aos 3GB do Nexus 6P, que consegue manter tantos apps quanto ele em cache.
O ZenFone 2 com seus 4GB de RAM mostra que consegue fazer pleno uso de sua memória RAM, mantendo em cache vários jogos simultâneamente.
Para saber mais sobre o LMK, este artigo do XDA explica muito bem: http://www.xda-developers.com/fix-for-galaxy-s6-memory-issues/
Segue abaixo um comparativo de uso de RAM de alguns aparelhos, para demonstrar o quanto as fabricantes adicionam "peso" ao sistema, comparado ao Android puro.
Galaxy S7
Android 6.0.1
rom original
Nexus 6P
Android 6.0.1
Galaxy S4 mini
Android 4.4.2
ROM original (retail)
Como podem ver, são 15 serviços rodando, fora os apps instalados pelo usuário. Levando-se em conta que há vários apps DESATIVADOS, que certamente geram serviço, podemos considerar que, o número de serviços ao retirar o aparelho da caixa seria em torno de 23-25.
Sony Z3 Compact
Android 5.0.2
ROM original (Vivo)
No Sony há 12 serviços, desconsiderando os apps DESATIVADOS. Ao retirar da caixa, eu chutaria algo em torno de 15-16, ou seja, uma situação consideravelmente menos pior que a da Samsung.
III - OBSERVAÇÃO
Isso serve também pra mostrar que os apps "abertos" naquela tela de multi-tarefa (chamado no Android de "Apps recentes") não necessariamente estão abertos. Só estão de fato "abertos" os que aparecerem no screenshot 1 e 2.
E, mesmo que estejam em cache, eles estão CONGELADOS, ou seja, não gastam bateria.
Portanto, PAREM de "fechar" os apps recentes de forma obsessiva, pois o Android vai carrega-los novamente no cache. Você só vai gastar mais bateria fazendo isso, além de diminuir a velocidade do sistema.
IV - RESUMO
- Quanto mais apps em cache na memória, melhor. Mesmo que sua memória esteja 90% utilizada.
- Quanto mais (2) SERVIÇOS e (3) PROCESSOS ASSOCIADOS estiverem rodando, haverá menos (4) PROCESSOS EM CACHE, e pior será a experiência do usuário na questão da multi-tarefa.
- Ficar limpando os apps recentes não traz nenhum benefício, pelo contrário, só vai consumir mais energia e deixar a abertura dos apps mais lenta.
- Quanto mais (2) SERVIÇOS e (3) PROCESSOS ASSOCIADOS estiverem rodando, haverá menos (4) PROCESSOS EM CACHE, e pior será a experiência do usuário na questão da multi-tarefa.
- Ficar limpando os apps recentes não traz nenhum benefício, pelo contrário, só vai consumir mais energia e deixar a abertura dos apps mais lenta.
Última edição: