Por que o uso total de memória relatado pelo Gerenciador de Tarefas do Windows é muito maior do que a soma do uso de memória de todos os processos? [duplicado]

79

O Gerenciador de Tarefas mostra meu uso total de memória em 90% do meu total de 6 GB, mas nenhum processo está usando mais de 250 MB de RAM e a soma do uso de RAM de todos os processos em execução é inferior a 2 GB. Eu tentei:

  • Observando os números na coluna "Memória" na guia "Processos" do Gerenciador de Tarefas do Windows 8.
  • Observando as colunas "Working Set", "Private Working Set", "Shared Working Set" e "Commit Size" na guia "Detalhes" do Gerenciador de Tarefas.
  • Observando colunas relacionadas à memória semelhantes no Process Explorer.
  • Eu tentei executar o Sysinternals RAMMap, mas enquanto estou tendo a crise de pouca memória, ele falha no lançamento. Depois de resolver o problema, o RAMMap funciona normalmente, mas é tarde demais.

Todos mostram uma pequena quantidade de memória sendo usada.

Existem muitas pessoas perguntando variantes desta questão, com várias versões do Windows, por toda a Internet. Alguns deles conseguem resolver seus problemas de baixa memória, muitas vezes, reinstalando o software; às vezes, reinstalando as janelas do zero. Estou procurando uma resposta para as perguntas gerais que todos compartilham e que nunca parecem ser respondidas em outro lugar:

  1. Por que o total de memória usada é muito maior do que a memória usada por todos os processos listados, não importa o quanto eu tente contá-los?
  2. Como as janelas poderiam "saber" que a memória é usada sem saber qual programa está sendo usado?
  3. Quais processos possivelmente usam a memória, mas não aparecem na lista?
  4. Existe algum software que possa fornecer mais informações sobre a memória usada?

Detalhes específicos para o meu próprio problema: Desde a atualização para o Windows 8.1, O problema ocorre assim que eu me logar. Eu fico sem memória assim que eu corri qualquer programa. Percebi no Process Explorer que várias instâncias do iexplore.exe estavam em execução, aparentemente iniciadas automaticamente. Uma instância específica estava usando apenas alguns MB de RAM, mas mostrava centenas de milhões de falhas de página. Por um capricho, eu matei esse processo específico, e o uso da memória caiu imediatamente em 70%.

Levando a uma pergunta específica:

  • Como poderia matar um processo que supostamente só usava alguns MB libera vários GB?

E uma pergunta de bônus (presumivelmente difícil):

  • Faltando a reinstalação do Windows, como posso evitar ter que passar por isso toda vez que eu reinicializo meu computador?
por Josh 11.03.2014 / 03:46

1 resposta

9

A propósito, você deve tentar não usar o termo "memória". Isso cria muita confusão. Se você quer dizer memória física, diga "memória física" ou "RAM". Se você quer dizer memória virtual, diga isso. Se você quer dizer loja de apoio, diga.

Why is total used memory much higher than the memory used by all listed processes, no matter how I try to count them?

Porque o sistema operacional não desperdiça memória física (RAM), a menos que não tenha escolha.

How could windows "know" that memory is used without knowing what program is using it?

Porque nenhum programa está usando. Considere, por exemplo, a memória que contém o código de um programa que acabou de ser terminado. Nenhum programa está usando. Mas essa memória é usada, pois não é livre e contém dados que podem ser úteis (caso o programa seja executado novamente).

What processes might possibly use up memory but now show up on the list?

Não é usado por processos.

Is there any software out there that can give more information about used memory?

RAMMap pode fazer isso.

Existem apenas duas possibilidades, a RAM pode ser usada ou pode ser desperdiçada. Obviamente, o primeiro é melhor. Qualquer memória livre é sempre desperdiçada - uma máquina de 4GB não pode usar 2GB hoje para usar 6GB amanhã. Se você está pensando "eu quero de graça agora para que eu possa usá-lo mais tarde", esqueça isso. Você pode usá-lo agora e usá-lo mais tarde.

How could killing one process that supposedly only used a few MB free up several GB?

Você está com pouca memória, não memória física. Você tem bastante memória física livre, mas armazenamento insuficiente para o sistema operacional continuar alocando memória virtual que pode exigir suporte.

O processo estava usando apenas alguns MB de memória física, mas o sistema operacional pode ter que reservar vários GB de memória virtual para isso. Por exemplo, suponha que um processo crie um mapeamento de memória privada gravável de um arquivo de 2 GB. O SO deve reservar 2 GB de memória virtual suportada para o processo, porque ele pode gravar em cada byte desse mapeamento. Além disso, talvez nunca escreva em nenhum deles. É por isso que você precisa de um arquivo de paginação de bom tamanho.

Sistemas operacionais modernos escrevem muitas verificações (promissoras lojas de apoio) que nunca serão retiradas (exigem RAM). Você não pode continuar fazendo cheques (prometendo uma loja de apoio) mesmo se você tiver bastante dinheiro no banco (RAM grátis) se você já tiver escrito um monte de cheques que podem ou não receber dinheiro (prometido como uma grande loja). Como você tem). Os arquivos de paginação adicionam armazenamento de apoio, permitindo que o SO continue a escrever cheques.

    
por 11.03.2014 / 06:23