¿Por qué Windows no informa correctamente la RAM que utiliza VirtualBox?

¿Por qué Windows no informa correctamente la RAM que utiliza VirtualBox?

Entonces, por curiosidad, decidí echar un vistazo a mi uso de RAM con mi máquina virtual Windows 7 (3 GB de RAM asignada) en ejecución. Me sorprendió... ver los resultados y me pregunto por qué estos resultados son como son:

El administrador de tareas de mi máquina host (win 8.1) muestra lo siguiente:explorador de procesos de host

Lo que en realidad solo muestra cuán cerdo es Chrome.... De todos modos, observe que el administrador de VirtualBox solo usa 75 MB de RAM. Bueno, eso es razonable, después de todo esto es sólo elgerentey no la propia VM. Pero espera, esos números (incluso si sumas lo que no ves allí) no suman el uso actual de RAM (9 GB como se informa en la pestaña Rendimiento). Dado que mi máquina invitada está usando 1,5 GB en este momento, uno esperaría que estuviera un poco más arriba en la lista...

Bien, probemos con una herramienta diferente:RAMMapa

Primero, dos capturas de pantalla más de RAMMap:ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Bueno, esa parte para "proceso privado" parece ser de aproximadamente 3 GB (a menos que esté un orden de magnitud fuera de lugar con mi vistazo superficial), pero aún así, nada excepto Chrome está acaparando más de 100 MB de RAM.

Oye, mira esto:ingrese la descripción de la imagen aquí

Parece que finalmente encontré dónde está... pero ¿qué es esto? ¿VBox trata la RAM del huésped como un archivo que simplemente mantiene cargado en la RAM? ¿Es esto... algo completamente diferente? ¿Por qué Windows no me informa de esto en su herramienta habitual del Administrador de tareas?

TL;DR: Windows, no me muestras todo el uso de RAM

Respuesta1

Se muestra en RAMMap debajoConductor bloqueado. Vea los usos de 3GB que es lo que le asignó a la VM.

ingrese la descripción de la imagen aquí

Las máquinas virtuales utilizan esta memoria para que ninguna otra herramienta pueda utilizarla.

Respuesta2

TL;DR: El proceso estaba usando la memoria, dejó de usarla y Windows simplemente ha sido demasiado vago para lidiar con eso todavía.

Windows no muestra el uso de RAM en el Administrador de tareas en Proceso a menos que el proceso solicite la RAM y tenga cierto control sobre su uso. Si el sistema operativo le dio la RAM al proceso para respaldar las asignaciones, y esas asignaciones son descartables, sería confuso mostrarlas cargadas al proceso. Esto daría como resultado números de uso muy variables para un proceso, ya que otros procesos provocaron que estas asignaciones quedaran sin respaldo.

No hay ninguna razón particular por la que deba importarle que Windows haya dado 2 GB de RAM a este proceso, no porque lo haya solicitado, sino simplemente porque no se le ocurrió nada mejor que hacer con esa memoria. Y, por supuesto, Windows puede recuperar esa RAM en cualquier momento si tiene algo más que ver con la memoria.

Si el proceso realmente utiliza la memoria, se considerará parte de su conjunto de trabajo y se cargará al proceso. Si Windows limpiara las cosas ahora y el proceso luego usara la memoria, Windows simplemente tendría que asignarla nuevamente. Así que no tiene sentido hacer trabajo extra ahora sólo para, con toda probabilidad, hacer más trabajo más adelante.

información relacionada