O que significa se eu tiver muita memória "Inativa" no final de um dia de trabalho?


21

Depois de um dia de trabalho no meu MacBook Pro executando o Mac OS X 10.6.5, o Activity Monitor mostra que a maioria dos 8 GB de memória do meu computador é "Inativa" e apenas uma pequena parte do gráfico de pizza é "Livre". Isso ocorre mesmo quando eu fechei todos os aplicativos, com apenas o Finder em execução.

O que isso significa? A memória "inativa" é absorvida por algo? Ou ele ainda está disponível para uso dos aplicativos? Obrigado.


Respostas:


27

O OS X, como a maioria dos sistemas operacionais modernos, usa um sistema de memória virtual para gerenciar a memória. Entre outras finalidades, isso permite que o sistema operacional trate o computador como tendo um pool ilimitado de memória. Para conseguir isso, o sistema operacional paginará partes da RAM não utilizadas em um armazenamento de disco conhecido como swapfile .

Como a RAM não é ilimitada, o OS X agrupa a RAM em quatro categorias: com fio, ativa, inativa e gratuita. A memória com fio é requerida pelo sistema operacional e nunca pode ser paginada na memória. Memória ativa é a memória usada pelos programas em execução no momento. A memória inativa foi usada recentemente por programas que foram encerrados (ou que não são utilizados há muito tempo). Memória livre é, como o nome sugere, RAM que não está sendo usada.

Quando você inicia um programa, ele é carregado na memória ativa. Quando você sai de um programa, no entanto, ele não é removido da RAM; em vez disso, é colidido com a memória inativa. É por isso que geralmente é mais rápido relançar um programa - ele ainda está na RAM (tente isso com um grande programa como o Firefox).

Depois que toda a sua memória é usada (a memória livre é 0), o sistema operacional grava a memória inativa no arquivo de swap para liberar mais espaço na memória ativa.

Se um programa for paginado para o swapfile e você o reiniciar, ele será puxado do swapfile para a memória ativa.

Então, resumindo, você realmente não deveria se importar se a sua memória livre está baixa. De fato, você quer que a memória seja baixa - a memória é desperdiçada (como o sistema operacional não a está usando para nada).

Ao examinar a quantidade de memória que seu computador está usando, você realmente deseja prestar atenção principalmente ao Swap usado , que informa o tamanho do arquivo de swap de memória virtual e Page ins , que informa quantas vezes o SO precisa extrair memória do swapfile na memória ativa.


2
Considero que as saídas de página são um indicador melhor do uso de troca do que as entradas de página, porque as entradas de página incluem o carregamento de programas e o carregamento do arquivo de troca.
Gordon Davisson

1
No Activity Monitor, o tamanho da minha VM é superior a 160 GB! Existe algum tipo de arquivo de troca no meu computador que é realmente tão grande ?!
Hpy

1
@penyuan: Não. É teoricamente o tamanho do arquivo de troca , mas o tamanho real do arquivo de troca é chamado de Troca usada no Monitor de Atividade.
Mipadi

1
Memória inativa é parcialmente como você diz, embora especificamente um cache do sistema de arquivos ou bibliotecas que possa ser acessado novamente por um aplicativo, mas também seja blocos de memória de aplicativos em execução no momento que foram alocados, mas não foram acessados ​​em algum período de tempo (não tenho certeza do período exato). O kernel marca esses itens como Inativos para priorizá-los na paginação no disco se a quantidade de memória livre cair muito baixa.
drfrogsplat

2
@ deceze: a memória inativa é paginada. A memória ativa é movida para inativa quando não é mais necessária. Suponho que, se você tem tão pouca memória que não há espaço para memória inativa, a memória ativa seria paginada diretamente no disco, mas essa é uma circunstância especial. De fato, o swapfile cresce teoricamente indefinidamente (até que não haja mais espaço em disco), mas isso também é uma ocorrência extremamente rara.
Mipadi

9

Provavelmente, isso não é um problema e, de fato, está potencialmente acelerando o seu computador.

Todos os sistemas operacionais (a maioria?) Utilizam um cache de disco, que armazena alguns arquivos acessados ​​recentemente na memória, para que o acesso repetido a esses arquivos possa ser acelerado. O cache do disco no OS X é de tamanho variável e aparecerá como "Memória Inativa" sendo usada.

Se algum programa precisar de mais memória, o OS X limpará parte do cache do disco (os arquivos usados ​​menos recentemente) para permitir espaço para a execução / expansão do programa.

Acho que, se eu fizer muita compilação ou classificação de fotos (ou seja, acessar milhares de arquivos sucessivamente), o cache do disco será expandido e usará muita Memória Inativa. Desde que seja apenas este cache de disco, não há com que se preocupar.

Se for um processo ou aplicativo em segundo plano que está expandindo seu uso de memória (mas suas páginas estão marcadas como inativas), você poderá verificar se há programas com alto uso de "Memória real" no Activity Monitor. Se não houver nada obviamente grande lá (ou seja, o total está muito longe de 8 GB), será o cache do arquivo.

Você deve ver que há pouco ou nenhum uso de Swap, e se você abrir um programa que consome muita memória, a quantidade de memória inativa diminuirá sem precisar trocar para o disco.

(Acredito que houve um bug nas versões 10.4 ou 10.5 por um tempo em que nem sempre liberava essa memória de maneira muito eficaz e causava trocas apesar de ter um grande cache de disco, mas na minha experiência isso parece resolvido na 10.6).


A memória inativa é na verdade RAM, não a memória que foi paginada em disco.
Mipadi

3

A memória "inativa" está disponível para uso por outros programas - é apenas o cache de programas ou dados que você usou recentemente, caso precise deles novamente. Se você iniciar programas diferentes ou precisar de dados diferentes, a memória em cache será limpa e disponibilizada para sua nova carga de trabalho, conforme necessário.

Essa é a teoria, de qualquer forma, e acredito que seja sólida. No entanto, achei essa referência a um utilitário de "limpeza" que alguém escreveu porque não achava que a memória inativa estava sendo liberada com rapidez suficiente.

Para documentação oficial sobre o assunto, leia isto (e procure por "inativo").


Para constar, meu MBP atualmente diz: 58 MB grátis, 239 MB com fio, 1,84 GB ativo, 900 MB inativo - e o sistema está funcionando muito bem.
Michael H.

1
Acho o comando de limpeza uma ferramenta de envio de Deus. Ter o Photoshop + Firefox + Illustrator + Netbean + SmartGit pode facilmente fazer com que um iMac de 4Gb rasteje até a morte. Obviamente, o Firefox é o principal culpado, mas se você quiser acelerar um pouco as coisas, saia do Firefox e emita "expurgar" e "novo como novo"
Antony

2
A página de manual do Purge na verdade diz que foi gravada para liberar apenas o cache do disco (não mem anônimo: pilha, pilha ou cópia na gravação) para análise de desempenho (justamente porque o cache do disco acelera o sistema). Ele não foi escrito para ser lançado mais rapidamente, pois sua execução é mais lenta do que o kernel recupera dinamicamente a memória quando necessário. Fechar um aplicativo remove completamente todos os memos alocados e, se você remover posteriormente, o aplicativo será mais lento, consulte linuxatemyram.com/play.html . Acho que há algo de psicológico na eliminação, assim como esvaziar compulsivamente o lixo.
Jano

1

A partir do OS X 10.5, existem problemas evidentes de gerenciamento de memória no MAC OS X.

Finalmente consegui reproduzir o cenário problemático, por isso executei o teste e gravei a tela em vídeo.

Problema de desempenho do MAC OS X Lion - gerenciamento de memória quebrada

Eu executo o comando tar + bzip, que é um material básico do Unix, na grande quantidade de arquivos de imagem, na minha pasta Imagens /. Pouco antes do início, eu executo o comando "purge" para excluir os dados do programa inativo / em cache.

Você pode ver no vídeo que a memória livre começa a cair muito rapidamente e a inatividade está aumentando constantemente. Se você der uma olhada no comando "bsdtar", são necessários apenas um fragmento de RAM, portanto o problema não está nesse processo. Você não pode dizer que se trata de um vazamento de memória do programa, porque o problema não estaria no RAM inativo, mas no ativo / com fio.

Quando a memória livre caiu abaixo de 100mb, iniciei alguns aplicativos, como Safari, iPhoto e MS Word, e você pode ver no vídeo que leva alguns minutos para iniciar um aplicativo, quando normalmente (quando há RAM livre), levaria de 3 a 5 segundos para carregar.

Eu corro o mesmo cenário e os mesmos comandos na minha caixa do Linux Centos 6, não há problema! O uso da memória é de 10 a 20 mb, sem problemas com cache / buffer.

O gerenciamento de memória deve estar muito quebrado no Mac OS X!


1
Parte do que você descreve pode formar a base de uma pergunta diferente, mas não é uma resposta para essa pergunta.
Graham Perrin

2
Eu diria que sua descrição de memória livre se reduz rapidamente ao ponto de ajuste e o sistema acumula todo o restante da RAM com e sem fio como inativa é uma indicação de que o sistema está funcionando exatamente como projetado. Só porque o gerenciamento de memória é diferente em um sistema operacional e em outro não significa que ele também esteja quebrado. As opções de otimização sempre têm um lado negativo.
Bmike

0

Essa discussão só faz sentido se a afirmação de que "o seu computador funcionará mais rápido quando a memória livre estiver baixa" - for verdadeira. A menos que meu Mac Desktop seja conectado de maneira estranha, no minuto em que minha memória livre (monitorada) começa a ficar baixa, qualquer programa que eu esteja executando no momento começa a atolar até o ponto em que não posso fazer nada até que ele volte sozinho ou pela minha intervenção de memória livre. Eu tenho um iMac 2118 (2006 ou posterior) que atinge o máximo de 3 GB de RAM, então tento gerenciá-lo quando posso, mas isso é muito frustrante. Alguma ideia?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.