La cantidad de memoria asignada en el espacio de direcciones de ese proceso. Esto puede incluir asignaciones de memoria compartida.
En un proceso, habrá secciones del espacio de memoria para cada objeto compartido (DLL) que sea parte de él, así como algo de memoria para la pila y áreas asignadas por el proceso en sí.
Por ejemplo, mirando el mapa de memoria de un comando cat
en mi sistema puedo ver sus asignaciones de memoria. En este caso, utilizo cat /proc/self/maps
para investigar el proceso del gato. En su memoria virtual está mapeado el binario en sí, algunos montones, información de locale, libc (con varios indicadores de permisos), ld.so (el enlazador dinámico), stack, vdso y secciones vsyscall y algunas asignaciones anónimas (páginas mapeadas sin archivo de respaldo))
00400000-00408000 r-xp /bin/cat
00607000-00608000 rw-p /bin/cat
008ac000-008cd000 rw-p [heap]
7fbd54175000-7fbd543cf000 r--p /usr/lib/locale/locale-archive
7fbd543cf000-7fbd54519000 r-xp /lib/libc-2.7.so
7fbd54519000-7fbd54718000 ---p /lib/libc-2.7.so
7fbd54718000-7fbd5471b000 r--p /lib/libc-2.7.so
7fbd5471b000-7fbd5471d000 rw-p /lib/libc-2.7.so
7fbd5471d000-7fbd54722000 rw-p
7fbd54722000-7fbd5473e000 r-xp /lib/ld-2.7.so
7fbd5491d000-7fbd5491f000 rw-p
7fbd5493a000-7fbd5493d000 rw-p
7fbd5493d000-7fbd5493f000 rw-p /lib/ld-2.7.so
7fff5c929000-7fff5c93e000 rw-p [stack]
7fff5c9fe000-7fff5c9ff000 r-xp [vdso]
ffffffffff600000-ffffffffff601000 r-xp [vsyscall]
Para cada asignación, restar la dirección de inicio de la dirección de final para determinar su tamaño, por ejemplo la línea de [stack]
: 0x7fff5c9ff000 - 0x7fff5c9fe000 = 0x1000
. En decimal, 4096 bytes - una pila de 4 kib.
Si suma todas estas figuras, obtendrá el tamaño de la memoria virtual (VM) del proceso.
El tamaño de la máquina virtual no es una manera confiable de determinar cuánta memoria está usando un proceso. Por ejemplo, solo habrá una copia de cada uno de los mapas /lib/libc-2.7.so
de solo lectura en la memoria física, independientemente de cuántos procesos lo usen.
En realidad, vea el comentario de Mike Dimmick sobre esa publicación: "Se equivoca en el tamaño de VM. Es el total de todos los bytes privados (no compartidos) asignados por este proceso, ya sea en la memoria física o no ... " –