Qual è la differenza tra memoria reale, virtuale, condivisa e privata?


63

Le diverse colonne in Activity Monitor sono un po 'confuse


Vale la pena notare che esiste un quinto tipo di memoria se si fa clic su "Ispeziona" su un processo rispetto alle colonne nel monitor Attività. In particolare, esistono due tipi di memoria "virtuale": "Dimensione memoria virtuale" e "Memoria privata virtuale". Quest'ultimo è ciò che viene mostrato nella colonna "Mem virtuale" in Activity Monitor.
drfrogsplat,

Risposte:


46

Tratto dalla mia risposta a Server Fault :

Gergo di memoria di Mac OS X:

Cablato : si riferisce al codice del kernel e simili. Memoria che non dovrebbe mai essere spostata fuori dalla RAM. Conosciuta anche come memoria residente.

Condiviso : memoria condivisa tra due o più processi. Entrambi i processi mostrerebbero questa quantità di memoria, quindi potrebbe essere un po 'fuorviante sulla quantità di memoria effettivamente utilizzata.

Reale : si tratta dell'utilizzo della memoria "reale" per un'applicazione, come riportato da task_info (), un conteggio approssimativo del numero di pagine fisiche presenti nel processo corrente. (Rsize)

Privato : si tratta della memoria che un processo utilizza esclusivamente per conto proprio, utilizzata nella memoria residente. (RPRVT)

Virtuale : la quantità totale di spazio degli indirizzi nel processo mappata su qualsiasi cosa, che sia uno spazio arbitrariamente grande per variabili o altro, non equivale all'utilizzo effettivo della VM. (VSIZE)

Attivo : memoria attualmente etichettata come attiva e viene utilizzata la RAM.

Inattivo : "La memoria inattiva non viene più utilizzata ed è stata memorizzata nella cache del disco. Rimarrà nella RAM fino a quando un'altra applicazione avrà bisogno di spazio. Lasciare queste informazioni nella RAM è a tuo vantaggio se tu (o un client del tuo computer) torni ad esso più tardi. " - Guida di Mac OS X.

Gratuito : la quantità di RAM effettivamente disponibile senza dati.


La migliore documentazione che conosco (e che sono stato in grado di trovare nella ricerca di follow-up) è l' articolo sulla gestione della memoria di Apple sul sito Web degli sviluppatori.

Altre fonti utili: mailing list Darwin-dev: [ 1 ], [ 2 ] e un vecchio articolo su MacOSXHints . Inoltre Mike Ash ha pubblicato una buona presentazione per i non addetti ai lavori nel suo blog


5
Dalla lettura del documento di gestione della memoria di Apple, Inattivo non è stato necessariamente memorizzato nella cache su disco. Puoi dimostrarlo se controlli il tuo utilizzo della memoria inattiva (il mio è 747.5 MB in questo momento) e il tuo "Swap usato" (il mio è 0 byte in questo momento). Inattivo si riferisce solo alle pagine di memoria che non sono state recentemente lette / scritte da alcun processo.
drfrogsplat,

1
Potrebbe valere la pena di chiarire "Virtuale" poiché ci sono due riferimenti alla memoria "Virtuale" in Activity Monitor. La colonna "Mem virtuale" si riferisce a " Memoria privata virtuale " nella finestra del processo di ispezione, quindi c'è un'altra voce " Dimensione memoria virtuale " semplicemente denominata in quella finestra (che credo sia il componente condiviso della memoria virtuale). Questo è il 10.6.4 (nel caso in cui Activity Monitor abbia cambiato la terminologia ...)
drfrogsplat,

La "memoria privata" fa parte della "memoria reale"?
Franklin Yu,

6

La memoria reale si riferisce alla memoria fisica (moduli RAM effettivi nel computer). Mem virtuale è la quantità di memoria "falsa" allocata al processo, ovvero la memoria allocata sul supporto di memorizzazione permanente (disco rigido, unità a stato solido, ecc.) Per quel processo. La memoria condivisa è la memoria fisica (reale) che può essere condivisa con altri processi. La memoria privata è una memoria "reale" che può essere utilizzata solo dal processo a cui è allocata.

Queste spiegazioni possono aiutare anche ... direttamente dal monitor attività -> aiuto -> visualizzazione dell'utilizzo della memoria di sistema:

Ecco una spiegazione di alcune delle informazioni visualizzate nella parte inferiore del riquadro di memoria:

  • Cablato: la memoria cablata contiene informazioni che devono sempre rimanere nella RAM
  • Attivo: memoria attiva che contiene informazioni utilizzate attivamente.
  • Inattivo: la memoria inattiva contiene informazioni che non vengono utilizzate attivamente. Lasciare queste informazioni nella RAM è a tuo vantaggio se tu (o un client del tuo computer) torni ad esso in un secondo momento.
  • Usato: la memoria utilizzata viene utilizzata da un processo o dal sistema. La memoria utilizzata è la somma della memoria cablata, attiva e inattiva. Se il sistema richiede memoria, richiede memoria libera prima della memoria utilizzata.
  • Libero: la memoria libera non viene utilizzata ed è immediatamente disponibile.
  • Dimensione VM: la memoria virtuale o VM è lo spazio su disco rigido che può essere utilizzato come memoria. La dimensione della macchina virtuale è la quantità di spazio su disco utilizzata come memoria. Mac OS X può usare più memoria della quantità di RAM fisica che hai. Un disco rigido è molto più lento della RAM, quindi il sistema di memoria virtuale distribuisce automaticamente le informazioni tra spazio su disco e RAM per prestazioni efficienti. Pagina in / out: il numero di gigabyte di informazioni che Mac OS X ha spostato tra RAM e spazio su disco

6
Questo non è corretto La memoria virtuale non è memoria allocata sul disco (che si chiama swap). La memoria virtuale ha lo spazio degli indirizzi allocato ma non è nella memoria fisica. Potrebbe sembrare la stessa cosa, ma sottilmente diversa. In molti casi i programmi allocano la memoria senza mai toccarla. In questi casi i programmi utilizzano molta memoria virtuale. Per fare un esempio concreto, il mio sistema attualmente utilizza 512 MB di swap, ma ha allocato 196 GB di memoria virtuale (che è una quantità abbastanza tipica per le persone che eseguono Snow Leopard su K64).
Louis Gerbarg,

2
@ Louis, se la memoria virtuale è stata allocata ma non utilizza la RAM o il disco rigido, allora dov'è?
Michael Underwood,

4
@Michael: da nessuna parte. È teorico Solo perché è stato assegnato e assegnato un indirizzo non significa necessariamente che sia effettivamente utilizzato. I bit di basso livello del sistema operativo sanno quando mappare quegli indirizzi su posizioni fisiche nella RAM o scambiare spazio di archiviazione, ma non è necessario legare quello spazio se l'applicazione non sta effettivamente memorizzando informazioni a quegli indirizzi. Non solo, ma noterai che la colonna per ogni processo, Virtual Mem, non si avvicina affatto all'aggiunta della dimensione della macchina virtuale. I processi in realtà non utilizzano tutta quella memoria.
Robert S Ciaccio,

2
C'è un sacco di VM che non è effettivamente scambiabile. Ad esempio, se si esegue il mmap di un file da 4 GB, sono necessari 4 GB di VM, in lettura sfoglia direttamente dal file e sotto pressione verrà espulso (non scambiato) poiché il file originale può essere semplicemente riletto. La macchina virtuale e lo scambio sono cose completamente diverse, la macchina virtuale viene semplicemente utilizzata per capire cosa scambiare.
Louis Gerbarg,

3
Con VSIZE mi riferisco a qualcosa che non è elencato nel monitor attività, puoi vederlo elencato in alto se vuoi. Ciò che Activity Monitor elenca nella colonna della memoria virtuale è ciò che viene generalmente definito VPRVT, ovvero la quantità di indirizzo virtuale utilizzata dall'app che non è condivisa con altre app.
Louis Gerbarg,

4

Apple ha aggiornato Activity Monitor in OSX 10.9 (Mavericks). Hanno un buon articolo su cosa significa tutto qui http://support.apple.com/kb/HT5890 . In sintesi...

inserisci qui la descrizione dell'immagine

  • Memoria fisica: la quantità di RAM installata.
  • Memoria utilizzata: la quantità di RAM utilizzata e non immediatamente disponibile per altre app.
  • Memoria virtuale: la quantità di mappatura della memoria richiesta dalle app. Questo non è un consumo effettivo di risorse RAM e la sua dimensione è determinata dall'autore dell'app.
  • Scambia usato: lo spazio sul disco utilizzato per scambiare file inutilizzati da e verso la RAM. È normale vedere qualche attività e non è un'indicazione che hai esaurito le risorse RAM. Vedere la pressione della memoria nello stato Rosso indicherà che le risorse RAM sono esaurite.
  • Memoria app: la quantità di spazio utilizzata dalle app.
  • Memoria cablata: memoria che non può essere memorizzata nella cache su disco, quindi deve rimanere nella RAM. Questa memoria non può essere presa in prestito da altre app.
  • Compresso: la quantità di memoria nella RAM compressa, che rende disponibili più risorse RAM per altre app.
  • Cache file: lo spazio nella RAM contrassegnato come disponibile per le app da utilizzare che contiene file utilizzati di recente.

Grafico della pressione della memoria

La combinazione di statistiche di memoria libera, cablata, attiva, inattiva e usata nelle precedenti versioni di Activity Monitor è stata sostituita in Mavericks con un grafico "Memory Pressure" di facile lettura.

La pressione della memoria è indicata dal colore:

  • Verde : sono disponibili risorse di memoria RAM.
  • Giallo - Le risorse di memoria RAM sono in fase di assegnazione.
  • Rosso : le risorse di memoria RAM sono esaurite e OS X utilizza l'unità per la memoria.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.