Qual é a diferença entre memória real, virtual, compartilhada e privada?

62

As diferentes colunas no Activity Monitor são um pouco confusas

Jacob Gorban
fonte
Pode ser interessante notar que há um quinto tipo de memória se você clicar em "Inspecionar" em um processo em comparação com as colunas no Monitor de atividades. Especificamente, existem dois tipos de memória "Virtual": "Virtual Memory Size" e "Virtual Private Memory". O último é o que é mostrado na coluna "Mem virtual" no Activity Monitor.
drfrogsplat

Respostas:

46

Retirado da minha resposta na falha do servidor :

Jargão de memória do Mac OS X:

Com fio : refere-se ao código do kernel e tal. Memória que nunca deve ser removida da RAM. Também conhecido como memória residente.

Compartilhada : memória compartilhada entre dois ou mais processos. Ambos os processos mostrariam essa quantidade de memória, de modo que pode ser um pouco enganador quanto à quantidade de memória que está realmente em uso.

Real : Este é o uso de memória "real" para um aplicativo, conforme relatado por task_info () - uma contagem aproximada do número de páginas físicas que o processo atual possui. (RSIZE)

Privado : Esta é a memória que um processo está usando apenas por si próprio e que é usado na memória de residentes. (RPRVT)

Virtual : A quantidade total de espaço de endereço no processo mapeado para qualquer coisa - seja um espaço arbitrariamente grande para variáveis ​​ou qualquer coisa - não equivale ao uso real da VM. (VSIZE)

Ativo : Memória rotulada atualmente como ativa e usada na RAM.

Inativo : "A memória inativa não está mais sendo usada e armazenada em cache no disco. Ela permanecerá na RAM até que outro aplicativo precise de espaço. A saída dessas informações na RAM é vantajosa se você (ou um cliente do computador) retornar para isso mais tarde ". - Ajuda do Mac OS X

Livre : A quantidade de RAM realmente disponível sem nenhum dado.


A melhor documentação que conheço (e que pude encontrar em pesquisas de acompanhamento) é o artigo da Managing Memory, da Apple, em seu site de desenvolvedores.

Outras fontes que valem a pena: Lista de discussão de Darwin-dev: [ 1 ], [ 2 ] e um artigo antigo sobre MacOSXHints . Além disso, Mike Ash postou uma boa apresentação para leigos em seu blog

Chealion
fonte
5
A partir da leitura do documento Managing Memory da Apple, o Inactive não foi necessariamente armazenado em cache no disco. Você pode demonstrar isso se você verificar o uso de memória inativa (o meu é 747,5 MB agora) e seu "Swap usado" (o meu é 0 bytes agora). Inativo refere-se apenas a páginas de memória que não foram lidas / escritas recentemente por nenhum processo.
drfrogsplat
1
Pode valer a pena esclarecer "Virtual", pois há duas referências à memória "Virtual" no Activity Monitor. A coluna "Virtual Mem" refere-se a " Virtual Private Memory " na janela Inspect Process, e há outra entrada simplesmente intitulada " Virtual Memory Size " nessa janela (que eu acredito ser o componente compartilhado da memória Virtual). Isso é no 10.6.4 (no caso Monitor de atividade mudou a terminologia ...)
drfrogsplat
A "memória particular" faz parte da "memória real"?
Franklin Yu
6

Memória real refere-se à memória física (módulos reais de RAM no seu computador). Virtual Mem é ​​o quanto de memória "falsa" é alocada para o processo, ou seja, memória alocada no meio de armazenamento permanente (disco rígido, unidade de estado sólido, etc) para esse processo. A memória compartilhada é uma memória física (real) que pode ser compartilhada com outros processos. A memória privada é memória "real" que só pode ser usada pelo processo para o qual está alocada.

Essas explicações podem ajudar também ... diretamente do monitor de atividade -> ajuda -> visualizando o uso da memória do sistema:

Aqui está uma explicação de algumas das informações exibidas na parte inferior do painel de memória:

  • Com fio: memória com fio contém informações que sempre devem permanecer na RAM
  • Ativo: Memória ativa que contém informações ativamente usadas.
  • Inativo: Memória inativa contém informações que não estão sendo ativamente usadas. Deixar esta informação na RAM é a sua vantagem se você (ou um cliente do seu computador) voltar a ela mais tarde.
  • Usado: A memória usada está sendo usada por um processo ou pelo sistema. A memória usada é a soma da memória com fio, ativa e inativa. Se o sistema requer memória, ele libera memória antes da memória usada.
  • Livre: A memória livre não está sendo usada e está imediatamente disponível.
  • Tamanho da VM: memória virtual, ou VM, é o espaço em disco rígido que pode ser usado como memória. O tamanho da VM é a quantidade de espaço em disco que está sendo usada como memória. O Mac OS X pode usar mais memória do que a quantidade de RAM física que você possui. Um disco rígido é muito mais lento que a RAM, portanto, o sistema de memória virtual distribui automaticamente informações entre espaço em disco e RAM para desempenho eficiente. Insersos / saídas de página: o número de gigabytes de informações que o Mac OS X moveu entre a RAM e o espaço em disco
Robert S Ciaccio
fonte
6
Isso não está correto. Memória Virtual não é memória alocada em disco (isso é chamado de swap). Memória virtual é que tem espaço de endereço alocado, mas não está na memória física. Isso pode parecer a mesma coisa, mas a sutileza é diferente. Em muitos casos, os programas alocam memória sem nunca tocá-la. Nesses casos, os programas estão usando muita memória virtual. Para dar um exemplo concreto, meu sistema atualmente está usando 512 MB de swap, mas tem 196 GB de memória virtual alocada (o que é uma quantia bastante típica para pessoas que usam o Snow Leopard no K64).
Louis Gerbarg
2
@ Louis, se a memória virtual foi alocada, mas não faz uso da memória RAM ou do disco rígido, então onde está?
Michael Underwood
4
@Michael: em nenhum lugar. É teórico. Só porque foi alocado e atribuído, um endereço não significa necessariamente que ele está sendo usado. Os bits de baixo nível do sistema operacional sabem quando mapear esses endereços para locais físicos na memória RAM ou armazenamento de troca, mas não há necessidade de amarrar esse espaço se o aplicativo não estiver armazenando informações nesses endereços. Não só isso, mas você notará que a coluna para cada processo, Virtual Mem, não chega nem perto de adicionar o tamanho da VM. Os processos não estão realmente usando toda essa memória.
Robert S Ciaccio
2
Há muita VM que não é realmente trocável. Por exemplo, se você mapear um arquivo de 4GB, ele levará 4 GB de VM, depois de lido ele será direcionado diretamente do arquivo e sob pressão ele será descartado (não trocado), já que o arquivo original pode ser simplesmente relido. VM e troca são realmente coisas completamente diferentes, a VM é simplesmente usada para descobrir o que trocar.
Louis Gerbarg
3
Por VSIZE eu estou me referindo a algo que não está listado no monitor de atividade, você pode vê-lo listado no topo, se quiser. O que o Activity Monitor lista na coluna de memória virtual é o que geralmente é chamado de VPRVT, que é a quantidade de endereço virtual usado pelo aplicativo que não é compartilhado com nenhum outro aplicativo.
Louis Gerbarg
4

A Apple atualizou o Activity Monitor no OSX 10.9 (Mavericks). Eles têm um bom artigo sobre o que tudo significa aqui http://support.apple.com/kb/HT5890 . Em suma...

insira a descrição da imagem aqui

  • Memória Física: A quantidade de RAM instalada.
  • Memória Usada: A quantidade de RAM sendo usada e não imediatamente disponível para outros aplicativos.
  • Memória virtual: a quantidade de mapeamento de memória que os aplicativos solicitaram. Este não é um consumo real de recursos de RAM e seu tamanho é determinado pelo autor do aplicativo.
  • Swap Used: O espaço na sua unidade sendo usado para trocar arquivos não utilizados de e para a RAM. É normal ver alguma atividade e não é uma indicação de que você esgotou os recursos de RAM. Ver a pressão da memória no estado Vermelho indicará que os recursos de RAM estão esgotados.
  • Memória do aplicativo: a quantidade de espaço que está sendo usada pelos aplicativos.
  • Memória com fio: memória que não pode ser armazenada em cache no disco, portanto, ela deve permanecer na RAM. Essa memória não pode ser emprestada por outros aplicativos.
  • Compactado: a quantidade de memória na RAM que é compactada, disponibilizando mais recursos de RAM para outros aplicativos.
  • Cache de Arquivo: O espaço na RAM marcado como disponível para aplicativos a serem usados ​​que contém arquivos usados ​​recentemente.

Gráfico de pressão de memória

A combinação de estatísticas de memória Free, Wired, Active, Inactive & Used em versões anteriores do Activity Monitor foram substituídas no Mavericks por um gráfico "Memory Pressure" de fácil leitura.

A pressão da memória é indicada pela cor:

  • Verde - Recursos de memória RAM estão disponíveis.
  • Âmbar - os recursos de memória RAM estão sendo solicitados.
  • Vermelho - Os recursos de memória RAM estão esgotados e o OS X está usando a unidade para memória.
Ryan
fonte