Mac OS X: O que está usando minha memória 'ativa'?

7

Estou usando um MacBook Pro recente com 8 GB de RAM e depois de algumas horas de uso no trabalho, percebo a quantidade de memória 'ativa' crescendo e crescendo.

Sempre que eu reinicio meu Mac, tudo parece bem e dificilmente está usando qualquer RAM. Mas depois de algumas horas, parece assim:

Comovocêpodever,nessecaso,édecercade4,3GB.

Sendoumdesenvolvedor,seique'memóriaativa'éaquantidadedememóriausadaatualmentepelosprocessosemexecução.Então,aprimeiracoisaquefizfoisairdetodososaplicativosematartodososprocessosquenãoparecempertenceraoMacOSX.

Depoisquefizisso,minhamemóriaativacaiucercade400MB,masfiqueipresanoquevocêvênacapturadetela.Nãohámaisprocessosouaplicativosparasair.

Agoraeuestoumeperguntandooqueestárealmentesegurandoamemória?topeoActivityMonitornãorelatamnenhumprocessocomaltousodememória.

Algumaidéia?

Obrigado!

Atualização1:

GraçasàrespostadeDougHarris,fizestacapturadetela.Elemostraumusodememóriaativade2,55GBemtodoosistema,masapenasumusodememóriade1,55GBqueocomandopscalcula.

Não sei ao certo onde o restante dos 2,55 GB se foi ou onde está alocado. Eu tenho instrumentos instalados, mas como isso acontece em algumas horas, é difícil usar instrumentos. Isso parece um vazamento de memória em algum lugar do sistema operacional. Talvez um driver (embora eu não tenha nenhuma extensão de kernel instalada - verificado com kextstat ).

Pessoalmente, acho que seria interessante ver "mais" sobre o status de gerenciamento de memória. No Linux há alguma informação sob "/ proc" disponível, afaik.

    
por BastiBen 11.02.2011 / 15:34

4 respostas

4

Mesmo que nenhum processo individual tenha alto uso de memória, ainda há muitos processos sendo executados - tudo isso se soma.

Usando ps e outras ferramentas de linha de comando, você pode aprofundar isso.

Primeiro, use as opções para ps para limitar o que é mostrado apenas para a memória residente e o nome do comando. -m ordena a saída pelo uso da memória, -a mostra todos os processos dos usuários, -x mostra processos não associados a um terminal (ou seja, a maioria dos aplicativos do mac).

$ ps -axm -o "rss,comm" 

Aqui estão as primeiras linhas que vejo:

   RSS COMM
210256 /Applications/Firefox.app/Contents/MacOS/firefox-bin
158276 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
155360 /Applications/iTunes.app/Contents/MacOS/iTunes

Não é de admirar que eles estejam no topo (e o processo do Chrome mostrado é apenas um dos muitos). A coluna RSS é expressa como blocos de 1024 bytes. Então o iTunes está usando cerca de 151,7 MB.

Essa saída é formatada bem o suficiente para que você possa lançá-la em uma planilha para análise, se quiser analisar as coisas dessa maneira. Eu vou ficar na linha de comando um pouco mais

Combine mais um monte para ver a soma de todos os processos:

$ ps -axm -o "rss,comm" | awk 'BEGIN { s=0;}; {s=s+$1;}; END { printf("%.2f GB\n", (s/1024.0/1024));}'

A saída que eu vejo para isso é 2.44 GB , não exatamente o que eu vejo para Active memory no Activity Monitor, mas perto o suficiente para que eu possa usar ps para chegar ao fim disso.

Você pode adicionar apenas esses processos usando mais de 100 MB:

$ ps -axm -o "rss,comm" | awk 'BEGIN { c=0;s=0;}; ($1 > 100000) {c=c+1;s=s+$1;}; END { printf("%.2f GB from %d processes\n", (s/1024.0/1024),c);}'

0.98 GB from 8 processes

Eu não disse exatamente o que está usando a memória do seu Mac, mas essas ferramentas ajudarão você a descobrir.

    
por 11.02.2011 / 16:25
1

man -k DTrace. Essas ferramentas são as que vão resolver isso. Boa sorte

    
por 21.03.2011 / 07:46
0

Parece que um dos processos do sistema está vazando memória (ou isso, ou um número crescente de processos do sistema estão sendo executados por algum motivo). Você pode verificar isso diretamente no Activity Monitor, alternando o menu pop-up na barra de ferramentas de Meus processos para Todos os processos e, em seguida, classificando pela coluna Real Mem. Procure por processos usando muita memória real e / ou muitas instâncias do mesmo nome de processo. Isso não resolve o problema, mas deve pelo menos dar uma ideia de onde ele está vindo.

    
por 12.02.2011 / 05:01
0

Para mim, parece que a memória ativa é apenas uma memória livre disponível para reutilização, mas não especificamente marcada como "livre"

    
por 03.05.2013 / 23:15