Tengo un tamaño de VM de 350 GB.
El tamaño de la VM en realidad no refleja ningún recurso en uso, ni es un límite. Es la suma de los tamaños de espacio de direcciones ( ps -ax -O vsz
se mostrarán) para todos los procesos en ejecución. El tamaño del espacio de direcciones es simplemente el número más grande utilizado por ese proceso para referirse a ubicaciones en la memoria; la memoria por debajo de ese valor ni siquiera puede asignarse a ningún propósito
Este es solo un ejemplo de por qué habría tales brechas:
Varios programas pueden usar bibliotecas de código compartidas (también conocidas como frameworks), como Cocoa. Para iniciar un programa de manera eficiente, estas bibliotecas compartidas están organizadas de manera que cada biblioteca en su sistema (en su mayoría) se encuentre en una dirección virtual diferente; esto significa que cuando se carga el programa, su código que hace referencia a la biblioteca ya puede apuntar a esa dirección y no necesita reescribirse con diferentes direcciones (reubicación o enlace dinámico). Pero no todos los programas usan todas las bibliotecas, por lo que habrá lagunas.
(No soy un experto en estos asuntos; algunos detalles específicos pueden estar desactivados. Considere lo anterior como una guía sobre el tipo de complejidad que puede existir en un sistema moderno, no exactamente cómo funciona realmente).