¿Cuál es la diferencia entre memoria real, virtual, compartida y privada?

Las diferentes columnas en el Monitor de actividad son un poco confusas

Puede valer la pena señalar que hay un quinto tipo de memoria si hace clic en "Inspeccionar" en un proceso en comparación con las columnas en el Monitor de actividad. Específicamente, hay dos tipos de memoria "virtual": "Tamaño de memoria virtual" y "Memoria privada virtual". Esto último es lo que se muestra en la columna "Memoria virtual" en el Monitor de actividad.

Respuestas (3)

Tomado de mi respuesta en Server Fault :

Jerga de memoria de Mac OS X:

Alámbrico : Esto se refiere al código del kernel y demás. Memoria que nunca debe ser movida fuera de la RAM. También conocido como memoria residente.

Compartida : Memoria que se comparte entre dos o más procesos. Ambos procesos mostrarían esta cantidad de memoria, por lo que puede ser un poco engañoso saber cuánta memoria está realmente en uso.

Real : Este es el uso de memoria "real" para una aplicación según lo informado por task_info() - un recuento aproximado de la cantidad de páginas físicas que tiene el proceso actual. (TAMAÑO)

Privado : esta es la memoria que un proceso usa únicamente por sí mismo y que se usa en la memoria residente. (RPVV)

Virtual : la cantidad total de espacio de direcciones en el proceso que se asigna a cualquier cosa, ya sea un espacio arbitrariamente grande para variables o cualquier cosa, no equivale al uso real de VM. (TALLAV)

Activo : Memoria actualmente etiquetada como activa y se utiliza RAM.

Inactivo : "La memoria inactiva ya no se usa y se ha almacenado en caché en el disco. Permanecerá en la RAM hasta que otra aplicación necesite el espacio. Dejar esta información en la RAM es una ventaja si usted (o un cliente de su computadora) regresa más tarde". - Ayuda de Mac OS X

Libre : la cantidad de RAM realmente disponible sin ningún dato.


La mejor documentación que conozco (y he podido encontrar en la investigación de seguimiento) es el propio artículo de Apple sobre cómo administrar la memoria en su sitio web para desarrolladores.

Otras fuentes valiosas: Lista de correo de Darwin-dev: [ 1 ], [ 2 ] y un artículo antiguo sobre MacOSXHints . Además, Mike Ash ha publicado una buena introducción para laicos en su blog .

Al leer el documento de administración de memoria de Apple, Inactivo no necesariamente se ha almacenado en caché en el disco. Puede demostrar esto si verifica su uso de memoria inactiva (la mía es de 747.5 MB en este momento) y su "Intercambio usado" (la mía es de 0 bytes en este momento). Inactivo solo se refiere a las páginas de memoria que ningún proceso ha leído/escrito recientemente.
Podría valer la pena aclarar "Virtual", ya que hay dos referencias a la memoria "Virtual" en el Monitor de actividad. La columna "Memoria virtual" se refiere a " Memoria privada virtual " en la ventana Inspeccionar proceso, y luego hay otra entrada titulada simplemente " Tamaño de memoria virtual " en esa ventana (que creo que es el componente compartido de la memoria virtual). Esto es en 10.6.4 (en caso de que Activity Monitor haya cambiado la terminología...)
¿Es la "memoria privada" parte de la "memoria real"?
El Monitor de actividad tiene una columna con la etiqueta "Memoria". ¿A cuál de estos corresponde?
No es ninguno de estos, sino más bien una métrica más complicada y matizada llamada "huella de memoria" del proceso. Consulte la página del manual para footprint(1)obtener más detalles sobre cómo se calcula.

Real mem se relaciona con la memoria física (módulos RAM reales en su computadora). Virtual Mem es la cantidad de memoria "falsa" que se asigna al proceso, es decir, la memoria que se asigna en el medio de almacenamiento permanente (disco duro, unidad de estado sólido, etc.) para ese proceso. La memoria compartida es memoria física (real) que se puede compartir con otros procesos. La memoria privada es memoria "real" que solo puede ser utilizada por el proceso al que está asignada.

Estas explicaciones también pueden ayudar... directamente desde el monitor de actividad --> ayuda --> ver el uso de la memoria del sistema:

Aquí hay una explicación de parte de la información que se muestra en la parte inferior del panel de memoria:

  • Alámbrico: la memoria alámbrica contiene información que siempre debe permanecer en la RAM
  • Activo: memoria activa que contiene información que se está utilizando activamente.
  • Inactivo: la memoria inactiva contiene información que no se está utilizando activamente. Dejar esta información en la RAM es ventajoso si usted (o un cliente de su computadora) regresa a ella más tarde.
  • Usado: la memoria usada está siendo utilizada por un proceso o por el sistema. La memoria utilizada es la suma de la memoria cableada, activa e inactiva. Si el sistema requiere memoria, toma memoria libre antes que memoria usada.
  • Libre: la memoria libre no se está utilizando y está disponible de inmediato.
  • Tamaño de la VM: la memoria virtual, o VM, es espacio en el disco duro que se puede utilizar como memoria. El tamaño de la máquina virtual es la cantidad de espacio en disco que se utiliza como memoria. Mac OS X puede usar más memoria que la cantidad de RAM física que tiene. Un disco duro es mucho más lento que la RAM, por lo que el sistema de memoria virtual distribuye automáticamente la información entre el espacio del disco y la RAM para un rendimiento eficiente. Entradas/salidas de página: la cantidad de gigabytes de información que Mac OS X ha movido entre RAM y espacio en disco
Esto no es correcto. La memoria virtual no es memoria que se asigna en el disco (eso se llama intercambio). La memoria virtual es la que tiene espacio de direcciones asignado pero no está en la memoria física. Eso puede parecer lo mismo, pero es sutilmente diferente. En muchos casos, los programas asignan memoria sin siquiera tocarla. En esos casos, los programas utilizan mucha memoria virtual. Para dar un ejemplo concreto, mi sistema actualmente usa 512 MB de intercambio, pero tiene 196 GB de memoria virtual asignada (que es una cantidad bastante típica para las personas que ejecutan Snow Leopard en K64).
@Louis, si se asignó la memoria virtual pero no utiliza la RAM o el disco duro, ¿dónde está?
@Louis: Tienes razón. Sin embargo, es un poco confuso debido a la forma en que el Monitor de actividad muestra estos fragmentos de información. Los 196 GB de VM a los que se refiere no son el tamaño real del archivo de intercambio, pero describen el tamaño potencial del archivo de intercambio. Observe cómo usan la frase "puede usarse como memoria".
@Michael: en ninguna parte. Es teórico. El hecho de que se haya asignado y asignado una dirección no significa necesariamente que realmente se esté utilizando. Los bits de bajo nivel del sistema operativo saben cuándo asignar esas direcciones a ubicaciones físicas en RAM o almacenamiento de intercambio, pero no hay necesidad de ocupar ese espacio si la aplicación no está almacenando información en esas direcciones. No solo eso, sino que notará que la columna para cada proceso, Virtual Mem, no se acerca a la suma del tamaño de la máquina virtual. Los procesos en realidad no están usando toda esa memoria.
Hay muchas máquinas virtuales que en realidad no son intercambiables. Por ejemplo, si asigna un archivo de 4 GB, se necesitan 4 GB de VM, al leerlo, se insertará directamente desde el archivo y, bajo presión, se eliminará (no se intercambiará), ya que el archivo original simplemente se puede volver a leer. La VM y el intercambio son cosas completamente diferentes, la VM simplemente se usa para descubrir qué intercambiar.
gracias por aclarar eso Entonces, ¿cuál es la correlación, si la hay, entre el tamaño de la máquina virtual y la columna de memoria virtual que se muestra por proceso?
El tamaño de la VM es la cantidad total de espacio de direcciones asignado en la aplicación, independientemente de cuál sea el último almacén de respaldo para ese espacio de direcciones y si realmente se ha tocado o no.
Debo señalar que no estaba claro en el primer comentario VSIZE incluye todo RSIZE (todas las páginas residentes todavía están asignadas en el espacio de direcciones virtuales de la aplicación). Debería haber dicho "pero no es memoria física", no "no está en la memoria física".
Una vez más, creo que la terminología de Activity Monitor está confundiendo nuestra discusión. En su penúltimo comentario, dice que el tamaño de la VM es la "cantidad total de espacio de direcciones asignado en la aplicación". ¿Se refiere realmente a la columna "Memoria virtual" que se muestra para cada proceso?
Por VSIZE me refiero a algo que no figura en el monitor de actividad, puede verlo en la parte superior si lo desea. Lo que el Monitor de actividad enumera en la columna de memoria virtual es lo que generalmente se conoce como VPRVT, que es la cantidad de dirección virtual utilizada por la aplicación que no se comparte con ninguna otra aplicación.

Apple actualizó el Monitor de actividad en OSX 10.9 (Mavericks). Tienen un buen artículo sobre lo que significa todo aquí http://support.apple.com/kb/HT5890 . En resumen...

ingrese la descripción de la imagen aquí

  • Memoria física: la cantidad de RAM instalada.
  • Memoria utilizada: la cantidad de RAM que se utiliza y que no está disponible de inmediato para otras aplicaciones.
  • Memoria virtual: la cantidad de asignación de memoria que han solicitado las aplicaciones. Este no es un consumo real de recursos de RAM y su tamaño lo determina el autor de la aplicación.
  • Intercambio usado: el espacio en su disco que se usa para intercambiar archivos no utilizados hacia y desde la RAM. Es normal ver algo de actividad y no es una indicación de que haya agotado los recursos de RAM. Ver la presión de la memoria en el estado rojo indicará que los recursos de RAM están agotados.
  • Memoria de la aplicación: la cantidad de espacio que utilizan las aplicaciones.
  • Memoria cableada: memoria que no se puede almacenar en caché en el disco, por lo que debe permanecer en la RAM. Esta memoria no puede ser prestada por otras aplicaciones.
  • Comprimido: la cantidad de memoria en RAM que se comprime, lo que hace que haya más recursos de RAM disponibles para otras aplicaciones.
  • Caché de archivos: el espacio en RAM marcado como disponible para que lo usen las aplicaciones que contiene archivos usados ​​recientemente.

Gráfico de presión de memoria

La combinación de estadísticas de memoria libre, cableada, activa, inactiva y usada en versiones anteriores de Monitor de actividad se reemplazó en Mavericks con un gráfico de "Presión de memoria" fácil de leer.

La presión de la memoria se indica por color:

  • Verde : hay recursos de memoria RAM disponibles.
  • Ámbar : se están asignando recursos de memoria RAM.
  • Rojo : los recursos de la memoria RAM están agotados y OS X está usando la unidad como memoria.