Magia ou tecnologia? Entenda como o OS X trabalha no gerenciamento de memória do seu Mac

Informações do SistemaMuitos fatores podem influenciar na resposta do seu computador ao que você precisa fazer com ele e, dentre os mais críticos — especialmente tratando-se de um Mac —, está a memória de acesso aleatório (random access memory, ou RAM). Como não deve ser novidade para alguns, a capacidade disponível influencia diretamente em quantos aplicativos você pode manter em execução ao mesmo tempo, enquanto utiliza a sua máquina.

Em um Macintosh atual, porém, existem alguns agravantes para isso. Tanto o OS X quanto todo o ecossistema existente de aplicativos nas mais diversas categorias já migraram para 64 bits há anos e, pelo benefício de manterem alto desempenho pelo maior tempo possível, eles tendem a consumir a memória livre disponível no seu computador ao máximo.

Mesmo se as principais atividades que você desempenha no seu dia-a-dia sejam email e internet, por exemplo, jogue alguns sites como Facebook e YouTube na tela, mais algumas conversas no Mensagens e no Skype enquanto mantém o iTunes e o Mail rodando em segundo plano, e o consumo de memória da sua máquina já sobe bastante. Depois, talvez você precise usar o Office ou o iWork para um trabalho acadêmico ou editar as fotos do seu final de semana e fazer um vídeo caseiro usando aplicativos como o iPhoto e o iMovie. Quando menos imaginar, os 4GB de RAM que ainda são padrão em muitas configurações de Macs por aí já foram para o espaço.

O problema, no entanto, não é você encher a memória de programas — afinal de contas, ela está lá para isso. Mas quando ela chega ao limite, o seu espaço preenchido por programas que você mantém abertos com menor utilização tende a ser movido para arquivos em disco, dando espaço ao próximo que precisa entrar no seu dia-a-dia — a esse processo, damos o nome de swapping (ou paginação de memória). Mesmo se o seu Mac for baseado em armazenamento flash, isso é ruim pelos seguintes motivos:

  • A resposta dos seus programas fica mais lenta, pois o OS X precisa recorrer ao seu sistema de arquivos para recuperar o estado daqueles que estão em execução por mais tempo. A velocidade de leitura/escrita em RAM é muito mais veloz do que qualquer outro meio, então não notamos essa degradação com tanta frequência; com o swapping, ela é mais perceptível.
  • Quando o usuário precisa depender de leitura/escrita em disco, as suas atividades também serão comprometidas, pois o Mac está passando parte do seu tempo de execução tratando de paginação de memória.
  • Lentidão em operações no seu computador implica em maior tempo de execução para cuidar das suas tarefas, resultando, entre outros fatores, na degradação da sua autonomia de bateria.

RAM no OS X

No que diz respeito a RAM, algumas ações foram tomadas no OS X Mavericks para melhorar a sua utilização de memória, o que é bastante benéfico para máquinas mais modestas (mesmo sendo de configurações recentes) funcionarem melhor. Quando precisa exigir da sua máquina, você espera que ela mantenha o seu ritmo de trabalho e, como uma tentativa de cumprir este objetivo ao máximo, a Apple aperfeiçoou para os seus produtos algumas iniciativas que fogem um pouco do trivial.

Como os aplicativos utilizam memória (e o OS X os controla)

Não convém aqui entrar nos detalhes de como desenvolvedores fazem alocação de memória para os seus programas; no geral, os aplicativos vão consumindo e mais e mais memória do sistema conforme precisam lidar com mais conteúdo — páginas de internet e mensagens de email para exibição, imagens e vídeos durante trabalhos de edição, músicas, etc. Em um determinado momento, quando você encerra alguma dessas atividades, os aplicativos podem liberar novamente parte da memória que estavam consumindo — mesmo que eles tenham que continuar abertos —, em quantidade que pode ser usada para dar espaço a novas tarefas.

Entretanto, há situações em que você pode exigir mais da quantidade de memória disponível para uso. Nas versões anteriores do OS X, isso implicava diretamente em recorrer à paginação. Com o tempo, a Apple desenvolveu tecnologias que buscam evitar a necessidade de se recorrer a isso e impedir a degradação do desempenho e da autonomia das nossas máquinas.

Diga-se de passagem, o iOS foi um grande responsável por parte delas. Ao contrário do OS X, ele não possui função de swapping; em vez disso, enquanto você vai utilizando aplicativos no seu aparelho e a memória vai sendo preenchida por vários deles em segundo plano, o sistema é programado para encerrar automaticamente aqueles que estão inativos por mais tempo — às vezes, de forma bem agressiva; quem desenvolve para iPhones e iPads sabe que precisa tomar cuidado com uso de memória, aproveitando os recursos colocados à disposição pela Apple para aprimorar seus programas.

Então quer dizer que o OS X possui a capacidade de “matar” programas em execução quando for possível? Sim, e isso não é bug, é recurso: chama-se encerramento automático. Ele surgiu há alguns anos no Lion e é extensamente documentado para desenvolvedores usarem no Mac. Obviamente, ele não acontece a esmo: os aplicativos precisam ser desenvolvidos com a capacidade de se colocar em uma condição que o sistema possa encerrá-los quando não estiverem visíveis e não estiverem utilizando outros serviços — suportando, inclusive, os recursos de salvamento automático e resumo de estado.

Não foi nada pensado para limitar as nossas capacidades no uso de um Mac — pelo contrário. O encerramento automático foi desenhado para nos ajudar enquanto usamos 10, 15 ou até mais programas todos os dias e esquecemos de encerrar algo que terminamos de fazer ou deixamos de lado em um determinado momento. E por mais que isso aconteça, os programas não saem do Dock e as janelas sequer saem do lugar; ou seja, muitas vezes você não vai perceber quando isso aconteceu.

Além disso, ao longo dos anos a Apple também aprimorou o uso de técnicas de programação que permitem aos desenvolvedores especificar melhor quais regiões da memória dos seus aplicativos podem ser recuperadas pelo OS X em tempo de execução e dar lugar a novos programas, dispensando a necessidade de encerrá-los em certas situações. Porém, são recursos opcionais, cujos benefícios nem sempre beneficiam tanto o sistema como um todo.

Entendendo o uso de compressão de memória

No Mavericks, quando um novo aplicativo precisa de mais memória, o sistema irá até os dados menos recentes existentes na RAM do seu Mac e executará um processo de compressão que pode reduzir até pela metade o seu tamanho consumido. Este processo é baseado em um algoritmo WKdm e é bastante eficiente — leva poucos milisegundos para acontecer e ocorre completamente em segundo plano, mesmo em máquinas de menor desempenho.

O resultado disso é um sistema que depende muito menos de memória virtual em situações de maior exigência, sem perda de resposta. Como o Mac passa a depender menos de paginação de memória para o HDD ou SSD, aplicativos que fazem uso de leitura/escrita de dados podem operar com força total. Quando eles não estiverem em uso, o seu computador economiza energia, por não depender de disco para cuidar de tarefas de memória.

Quando os aplicativos que tiveram sua memória comprimida precisarem ser usados, o sistema concede o espaço deles de volta com rapidez, fazendo os ajustes necessários. No dia-a-dia, é difícil perceber o seu sistema fazendo tantas operações de memória de aplicativos conforme você precisa de mais ou menos recursos. Porém, quando você tiver curiosidade, abra o o Monitor de Atividade e fique de olho na aba de memória.

Monitor de Atividade - Aba de Memória

Nos cálculos da Apple, um Mac com 8GB de RAM pode comprimir até 12GB de dados em memória.

Para aqueles que já fizeram o mesmo em versões anteriores do OS X, encontrar o uso de Swap em 0 bytes com uma dezena de aplicativos abertos (para ser modesto) chega a ser estranho. O funcionamento das técnicas de economia de memória da Apple pode ter efeitos variados com uso, mas acredite: elas estão sempre tentando ajudar. 😉

Posts relacionados