Desculpe, mas todas essas respostas perdem o alvo.
A resposta curta: a coluna VM size
não reflete o espaço de endereço virtual total (“v.a.s.”) definido pelo processo. É apenas um subconjunto disso. Especificamente, é o espaço de endereço "private committed" (também conhecido como "commit charge" do processo).
Considerando que a coluna Mem Usage
mostra o subconjunto do espaço de endereço virtual total do processo que é "válido" para o processo, isto é, pode ser acessado sem incorrer em uma falha de página.
(É comum, mas impreciso, dizer que é o subconjunto que está "na RAM". "Válido" - isto é, no conjunto de trabalho do processo - significa que está na memória e pode ser acessado sem incorrendo em uma falha de página, mas devido à ação dos caches de páginas (listas de páginas em standby e modificadas), além da memória compartilhada, geralmente há um pouco do vas do processo que está na RAM, mas requer uma falha de página para acessar ... mas será uma falha de página "soft", ou seja, uma que não envolva E / S de disco. Uma vez resolvida, a página estará no processo de trabalho e referências posteriores a ela não incorrerão em falhas ... a menos que ela seja envelhecida posteriormente fora do conjunto de trabalho.)
Então, se VM size
não é todo o tamanho virtual do processo, onde fica o resto? O outro grande contribuidor para o espaço de endereçamento virtual total de um processo é o espaço de endereçamento mapeado . A diferença entre eles é que private committed v.a.s. - Vou chamá-lo de privado a partir de agora; não existe algo não privado privado - é apoiado pelo arquivo de paginação, enquanto mapeado v.a.s. é apoiado pelos arquivos para os quais está mapeado.
"Apoiado por" significa que a parte que não pode ser mantida na RAM é mantida nesses arquivos.
Há também espaço virtual não-paginado (muito pequeno) e, possivelmente, memória "fisicamente mapeada" (muito pouco usada).
O total de todos eles poderia ser chamado de espaço de endereçamento virtual acessível do processo, porque todos eles podem ser referenciados sem incorrer em violação de acesso à memória (mas, para as partes pagináveis, poderia incorrer em uma falha de página, mas isso não significa que eles não estejam acessíveis; significa apenas que o primeiro acesso demora um pouco mais).
As duas primeiras porções, espaço de endereçamento privado confirmado e mapeado, podem ser chamadas de espaço de endereçamento virtual paginável .
A coluna Mem Usage
deveria ter sido chamada de "Conjunto de trabalho (total)". Normalmente será menor que o total pageable v.a.s. Infelizmente o Gerenciador de Tarefas do XP não tem um contador para o último. Mas, de qualquer forma, a coluna Mem Usage
mostra quanto do espaço de endereço virtual paginável total pode ser referenciado pelo processo sem incorrer em uma falha de página. Algumas delas serão páginas físicas associadas a páginas dedicadas privadas e outras com páginas mapeadas.
Se o gerenciador de tarefas do XP tivesse mais algumas colunas disponíveis, você veria as relações que espera ver: Total pageable v.a.s. (para o qual não existe agora um contador) nunca deve ser menor que o conjunto de trabalho total (chamado Mem Usage
no XP); e o privado cometido v.a.s. nunca deve ser menor que a parte privada do conjunto de trabalho do processo.
Gerenciador de tarefas em versões posteriores do Windows tem mais alguns desses contadores. A ferramenta Process Explorer da Sysinternals tem ainda mais. No Process Explorer:
"Conjunto de trabalho" é o conjunto de trabalho total do processo
"WS Shareable" é o subconjunto do total potencialmente compartilhado com outros processos (é um subconjunto do v.a.s. mapeado)
"WS Shared" é o subconjunto de "WS Shareable" que, na verdade, é compartilhado com outros processos, ou seja, também está nos conjuntos de trabalho de outros processos.
"WS Private" é o subconjunto de "Working Set" que não é compartilhável com outros processos. É associado e um subconjunto do compromisso privado do processo v.a.s.
"Bytes privados" é o compromisso privado do processo v.a.s. Você notará que é sempre maior que "WS Private", que é o relacionamento que você está procurando.
"Virtual Size" é a quantidade total de v.a.s. no processo. Isso inclui v.a.s. privada e compartilhada, mas também espaço de endereço "reservado". "Reservado" não está acessível, ocupa quase nenhum espaço físico em qualquer lugar, mas reserva intervalos de endereços virtuais. Não inclui regiões fisicamente mapeadas (também conhecidas como memória "AWE"). Em x64 sob Win 8.1 e posterior, também pode incluir uma área gigantesca (2.147.483.648 K ou 2 TiB) reservada para um novo recurso chamado "Controle de Fluxo Guard". Para obter informações sobre isso, consulte esta entrada em Alex Ionescu's blog