Lo sentimos, pero todas estas respuestas fallan.
La respuesta corta: la VM size
columna no refleja el espacio total de direcciones virtuales ("vas") definido por el proceso. Es solo un subconjunto de eso. Específicamente, es el espacio de direcciones "privado comprometido" (también conocido como "cargo de compromiso" del proceso).
Mientras que la Mem Usage
columna muestra el subconjunto del espacio total de direcciones virtuales del proceso que es "válido" para el proceso, es decir, se puede acceder sin incurrir en un error de página.
(Es común, pero impreciso, decir que es el subconjunto que está "en RAM". "Válido", es decir, en el conjunto de trabajo del proceso, significa que está en la memoria y se puede acceder sin incurrir en un fallo de página. Pero debido a la acción de las memorias caché de página (listas de páginas en espera y modificadas), más memoria compartida, generalmente hay un poco del proceso que está en la RAM pero requiere un error de página para acceder ... pero será un error de página "suave" , es decir, uno que no implique E / S de disco. Una vez resuelta, la página se encuentra en el conjunto de trabajo del proceso y las referencias adicionales no generarán fallas ... a menos que se elimine posteriormente del conjunto de trabajo).
Entonces, si VM size
no es todo el tamaño virtual del proceso, ¿dónde está el resto? El otro contribuyente importante al espacio total de direcciones virtuales de un proceso es el espacio de direcciones mapeado . La diferencia entre ellos es que el compromiso privado es vas: de ahora en adelante lo llamaré privado; no existe el privado no comprometido: está respaldado por el archivo de paginación, mientras que el vas mapeado está respaldado por los archivos a los que está mapeado.
"Respaldado por" significa que la parte que no se puede guardar en la RAM se guarda en esos archivos.
También hay espacio virtual no paginado (muy pequeño) y, posiblemente, memoria "mapeada físicamente" (muy poco utilizada).
El total de todos estos podría denominarse el espacio de direcciones virtuales accesible total del proceso, porque se puede hacer referencia a todo sin incurrir en una infracción de acceso a la memoria (pero, para las partes paginables, podría incurrir en un error de página, pero eso no ' t significa que no son accesibles; solo significa que el primer acceso lleva un poco más de tiempo).
Las dos primeras partes, espacio de direcciones privadas asignadas y asignadas, podrían denominarse espacio total de direcciones virtuales paginables .
La Mem Usage
columna debería haberse llamado "Conjunto de trabajo (total)". Normalmente será más pequeño que el total de páginas paginables Desafortunadamente, el Administrador de tareas de XP no tiene un contador para este último. Pero de todos modos, la Mem Usage
columna muestra cuánto del espacio total de direcciones virtuales paginables puede ser referenciado por el proceso sin incurrir en un error de página. Parte de esto serán páginas físicas asociadas con páginas privadas comprometidas, y algunas con páginas asignadas.
Si el administrador de tareas de XP tuviera algunas columnas más disponibles, vería las relaciones que espera ver: el total de páginas paginables (para las cuales ahora no hay un contador) nunca debería ser más pequeño que el conjunto de trabajo total (llamado Mem Usage
en XP); y el vas privado comprometido nunca debe ser más pequeño que la parte privada del conjunto de trabajo del proceso.
El administrador de tareas en versiones posteriores de Windows tiene algunos más de estos contadores. La herramienta Process Explorer de Sysinternals tiene aún más. En el Explorador de procesos:
"Conjunto de trabajo" es el conjunto de trabajo total del proceso
"WS Shareable" es el subconjunto del total que se comparte potencialmente con otros procesos (es un subconjunto del vas mapeado)
"WS Shared" es el subconjunto de "WS Shareable" que en realidad se comparte con otros procesos, es decir, también se encuentra en los conjuntos de trabajo de otros procesos.
"WS Private" es el subconjunto de "Conjunto de trabajo" que no se puede compartir con otros procesos. Está asociado y es un subconjunto del proceso privado comprometido del proceso.
"Bytes privados" es el vas comprometido privado del proceso. Notarás que siempre es más grande que "WS Private", que es la relación que estás buscando.
"Tamaño virtual" es la cantidad total de vas no libres en el proceso. Esto incluye vas privados y compartidos, pero también espacio de direcciones "reservado". "Reservado" no es accesible, casi no ocupa espacio físico en ningún lugar, pero reserva rangos de direcciones virtuales. No incluye regiones asignadas físicamente (también conocida como memoria "AWE"). En x64 con Win 8.1 y versiones posteriores, también puede incluir un área gigantesca (2,147,483,648 K, o 2 TiB) reservada para una nueva característica llamada "Control Flow Guard". Para obtener información al respecto, consulte esta entrada en el blog de Alex Ionescu .