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

62

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

Jacob Gorban
fuente
Vale 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.
drfrogsplat

Respuestas:

46

Tomado de mi respuesta en Server Fault :

Jerga de memoria de Mac OS X:

Cableado : Esto se refiere al código del núcleo y tal. Memoria que nunca se debe sacar de la RAM. También se conoce como memoria residente.

Compartido : 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 la cantidad de memoria que 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 del número de páginas físicas que tiene el proceso actual. (TAMAÑO)

Privado : Esta es la memoria que un proceso está usando solo por sí mismo que se usa en la memoria Residente. (RPRVT)

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. (VSIZE)

Activo : Memoria actualmente etiquetada como activa y se usa 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

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


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

Otras fuentes que merecen la pena: la 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 laica en su blog

Chealion
fuente
55
Al leer el documento Managing Memory de Apple, Inactivo no necesariamente se ha almacenado en caché en el disco. Puede demostrar esto si verifica el uso de su memoria inactiva (la mía es de 747.5 MB en este momento) y su "Swap used" (la mía es de 0 bytes en este momento). Inactivo solo se refiere a páginas de memoria que no han sido recientemente leídas / escritas por ningún proceso.
drfrogsplat
1
Puede 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 simplemente titulada " Tamaño de memoria virtual " en esa ventana (que creo que es el componente compartido de la memoria virtual). Esto está en 10.6.4 (en caso de que el Monitor de actividad haya cambiado la terminología ...)
drfrogsplat
¿La "memoria privada" es parte de la "memoria real"?
Franklin Yu
6

La memoria real se relaciona con la memoria física (módulos RAM reales en su computadora). Virtual Mem es la cantidad de memoria "falsa" asignada al proceso, es decir, la memoria asignada 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 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:

  • Con cable: la memoria con cable 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 una ventaja si usted (o un cliente de su computadora) vuelve 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, necesita memoria libre antes de usar la memoria.
  • Libre: no se está utilizando memoria libre y está disponible de inmediato.
  • Tamaño de VM: la memoria virtual, o VM, es el espacio del disco duro que se puede usar como memoria. El tamaño de VM es la cantidad de espacio en disco que se usa 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 en 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
Robert S Ciaccio
fuente
66
Esto no es correcto. La memoria virtual no es memoria asignada en el disco (que se denomina intercambio). La memoria virtual es que tiene espacio de direcciones asignado pero no está en la memoria física. Puede parecer lo mismo, pero sutilmente diferente. En muchos casos, los programas asignan memoria sin 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 Gerbarg
2
@ Louis, si la memoria virtual se ha asignado pero no utiliza RAM o el disco duro, ¿dónde está?
Michael Underwood
44
@Michael: en ninguna parte. Es teorico. 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 la RAM o el almacenamiento de intercambio, pero no es necesario 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 sumar al tamaño de VM. Los procesos no están usando toda esa memoria.
Robert S Ciaccio
2
Hay muchas máquinas virtuales que no son realmente intercambiables. Por ejemplo, si mapea un archivo de 4GB, se necesitan 4GB de VM, al leerlo, ingresará directamente desde el archivo y, bajo presión, se eliminará (no se intercambiará) ya que el archivo original simplemente se puede volver a leer. VM y el intercambio son cosas completamente diferentes, VM simplemente se usa para descubrir qué intercambiar.
Louis Gerbarg
3
Por VSIZE me estoy refiriendo a algo que no figura en el monitor de actividad, puede verlo en la parte superior si lo desea. Lo que Activity Monitor 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 otras aplicaciones.
Louis Gerbarg
4

Apple actualizó el Monitor de actividad en OSX 10.9 (Mavericks). Tienen un buen artículo sobre lo que todo significa 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 utilizada y no disponible de inmediato para otras aplicaciones.
  • Memoria virtual: la cantidad de asignación de memoria que las aplicaciones han solicitado. Este no es un consumo real de recursos de RAM y su tamaño lo determina el autor de la aplicación.
  • Intercambio utilizado: el espacio en su unidad que se utiliza para intercambiar archivos no utilizados hacia y desde la RAM. Es normal ver alguna 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 las aplicaciones que contiene 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 Activity Monitor se ha reemplazado 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 : los recursos de memoria RAM están disponibles.
  • Ámbar : se están asignando recursos de memoria RAM.
  • Rojo : los recursos de memoria RAM están agotados y OS X está utilizando la unidad de memoria.
Ryan
fuente