Por que o Windows não informa corretamente a RAM usada pelo VirtualBox?

Por que o Windows não informa corretamente a RAM usada pelo VirtualBox?

Então, por curiosidade, decidi dar uma olhada no meu uso de RAM com minha VM do Windows 7 (3 GB de RAM alocada) em execução. Fiquei... surpreso ao ver os resultados e me pergunto por que esses resultados são do jeito que são:

O gerenciador de tarefas da minha máquina host (win 8.1) mostra o seguinte:explorador de processo de host

O que realmente só mostra o quanto o Chrome é um porco. De qualquer forma, observe que o gerenciador do VirtualBox está usando apenas 75 MB de RAM. Bem, isso é razoável, afinal este é apenas ogerentee não a própria VM. Mas espere, esses números (mesmo se você somar o que não vê lá) não correspondem ao uso atual de RAM (9 GB conforme relatado na guia Desempenho). Dado que minha máquina convidada está usando 1,5 GB no momento, seria de se esperar que ela estivesse um pouco mais acima na lista...

Ok, vamos tentar uma ferramenta diferente:RAMMap

Primeiro, mais duas capturas de tela do RAMMap:insira a descrição da imagem aqui insira a descrição da imagem aqui

Bem, esse bit para "processo privado" parece ter cerca de 3 GB (a menos que eu esteja uma ordem de magnitude errada com meu olhar superficial), mas ainda assim - nada, exceto o Chrome, está consumindo mais de 100 MB de RAM.

Ah, ei, olha isso:insira a descrição da imagem aqui

Parece que finalmente descobri onde está... mas o que é isso? O VBox trata a RAM do convidado como um arquivo que ele mantém carregado na RAM? Isso é... algo completamente diferente? Por que o Windows não me informa sobre isso em sua ferramenta normal do Gerenciador de Tarefas?

DR: Windows, você não me mostra todo o uso de RAM

Responder1

É mostrado no RAMMap emMotorista bloqueado. Veja os usos de 3 GB que você atribuiu à VM.

insira a descrição da imagem aqui

As VMs usam essa memória para que nenhuma outra ferramenta possa usá-la.

Responder2

DR: O processo estava usando a memória, parou de usar a memória e o Windows ainda está com preguiça de lidar com isso.

O Windows não mostra o uso de RAM no Gerenciador de Tarefas em Processo, a menos que o processo solicite a RAM e tenha algum controle sobre seu uso. Se o sistema operacional fornecesse a RAM ao processo para apoiar os mapeamentos, e esses mapeamentos fossem descartáveis, seria confuso mostrá-los cobrados do processo. Isso resultaria em números de uso amplamente variados para um processo, pois outros processos faziam com que esses mapeamentos ficassem sem suporte.

Não há nenhuma razão específica para você se preocupar com o fato de o Windows ter fornecido 2 GB de RAM para esse processo, não porque ele solicitou, mas apenas porque não conseguiu pensar em nada melhor para fazer com essa memória. E, claro, o Windows pode recuperar essa RAM a qualquer momento se tiver algo a ver com a memória.

Se o processo realmente utilizar a memória, ela será considerada parte de seu conjunto de trabalho e cobrada do processo. Se o Windows limpasse as coisas agora e o processo usasse a memória posteriormente, o Windows teria apenas que alocá-la novamente. Portanto, não faz sentido fazer trabalho extra agora apenas para, muito provavelmente, fazer mais trabalho mais tarde.

informação relacionada