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

98

O Gerenciador de tarefas mostra meu uso total de memória em 90% do 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 é menor que 2 GB. Eu tentei:

  • Olhando para os números na coluna "Memória" na guia "Processos" do Windows 8 Task Manager.
  • Observando as colunas "Conjunto de Trabalho", "Conjunto de Trabalho Privado", "Conjunto de Trabalho Compartilhado" e "Tamanho de Confirmação" na guia "Detalhes" do Gerenciador de Tarefas.
  • Observando colunas semelhantes relacionadas à memória no Process Explorer.
  • Tentei executar o Sysinternals RAMMap, mas enquanto estou com a crise de pouca memória, ela falha no lançamento. Depois de resolver o problema, o RAMMap é executado normalmente, mas nesse momento é tarde demais.

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

Muitas pessoas fazem variantes desta pergunta, com várias versões do Windows, por toda a Internet. Alguns deles conseguem resolver seus problemas de pouca memória, geralmente reinstalando o software; às vezes reinstalando janelas a partir 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 a memória total usada é muito maior que a memória usada por todos os processos listados, não importa como eu tente contá-los?
  2. Como o Windows poderia "saber" que a memória é usada sem saber qual programa está sendo usado?
  3. Quais processos podem consumir memória, mas não aparecer na lista?
  4. Existe algum software por aí que possa fornecer mais informações sobre a memória usada?

Detalhes específicos do meu próprio problema: Desde a atualização para o Windows 8.1, o problema ocorre assim que eu faço o logon. Fico sem memória assim que executei 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, acabei com esse processo específico e o uso de memória caiu imediatamente em 70%.

Levando a uma pergunta específica:

  • Como matar um processo que supostamente usou apenas alguns MB liberou vários GB?

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

  • Com a falta de reinstalar o Windows, como posso evitar ter que passar por isso toda vez que reinicio o computador?
Josh
fonte
3
também a memória do kernel conta em uso. Imagem cargo de RAMMAp: blogs.technet.com/b/askperf/archive/2010/08/13/...
magicandre1981
2
Acho que a pergunta deveria ser intitulada "Por que estou ficando sem memória".
surfasb
É impossível responder a essa pergunta sem detalhes. Listar os programas instalados. Ou melhor ainda, um despejo dos processos em execução no Performance Monitor.
surfasb
1
Você está realmente desligando / reiniciando o computador completamente ou usa o desligamento híbrido (padrão no Windows 8)? Depois de mudar para o Windows 8, tive um problema semelhante. Presumo que um driver ocupou cada vez mais minha RAM física e não a devolveu, mesmo depois de desligar e ligar o computador. Em algumas semanas, acumulou vários gigabytes. Então agora, a cada poucos dias, clico em "reiniciar" ou pressiono shift enquanto clico em "desligar" para realmente desligar o PC.
Robert
2
No meu caso, era a memória "Driver Locked", reservada pelo Hyper-V por ter ativado a "Memória dinâmica". Eu tive que parar todas as VMs, desativar a configuração e reiniciá-las. Obrigado pela sugestão do RAMMap.
Dagelf

Respostas:

7

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. Se você quer dizer apoio à loja, diga.

Por que a memória total usada é muito maior que a memória usada por todos os processos listados, não importa como eu tente contá-los?

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

Como o Windows poderia "saber" que a memória é usada sem saber qual programa está sendo usado?

Porque nenhum programa está usando. Considere, por exemplo, a memória que contém o código de um programa que acabou de terminar. 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).

Quais processos podem consumir memória, mas agora aparecem na lista?

Não é usado por processos.

Existe algum software por aí que possa fornecer mais informações sobre a memória usada?

O RAMMap pode fazer isso.

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

Como matar um processo que supostamente usou apenas alguns MB liberou vários GB?

Você está com pouco armazenamento de backup, não memória física. Você tem bastante memória física livre, mas armazenamento de backup insuficiente para o SO continuar alocando memória virtual que pode exigir backup.

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 suportada para ele. Por exemplo, suponha que um processo crie um mapeamento de memória privada gravável de um arquivo de 2 GB. O sistema operacional deve reservar 2 GB de memória virtual com backup para o processo, pois pode gravar em cada byte desse mapeamento. Além disso, talvez nunca escreva para nenhum deles. É por isso que você precisa de um arquivo de paginação de bom tamanho.

Os sistemas operacionais modernos emitem muitos cheques (loja de apoio promissora) que nunca serão trocados (exigem RAM). Você não pode continuar escrevendo cheques (promissor backing store), mesmo que tenha muito dinheiro no banco (RAM grátis) se já tiver emitido um monte de grandes cheques que podem ou não ser sacados (prometeu o mesmo backing store Como você tem). Os arquivos de paginação adicionam armazenamento de backup, permitindo que o sistema operacional continue escrevendo cheques.

David Schwartz
fonte
14
PS: Estou usando a palavra "memória" não porque não conheço a diferença entre RAM e VM, mas porque meu computador está apenas me dizendo que está com falta de "memória" sem fornecer nenhuma informação sobre o que realmente é significa. (Presumo que isso signifique RAM, pelas razões que especifiquei no comentário anterior, mas não tenho certeza.) Prefiro que você use o vocabulário real (que posso procurar se necessário) do que elaborar metáforas financeiras :)
Josh
91
-1 porque depois de ler a resposta e todos os comentários, ainda não está claro por que a memória total usada é muito maior que a memória usada por todos os processos listados.
Bennett McElwee
6
Essa terminologia, em que a memória é "usada", embora nenhum programa esteja sendo usado, é bastante diferente do significado normal de palavras como "usado" e "livre" - talvez seja a terminologia da Microsoft, não a sua. De qualquer forma, suponha, por exemplo, que 50% da RAM seja usada atualmente por programas em execução e 25% não seja usada por nenhum programa em execução, mas que contém dados que podem ser úteis no futuro, mas também podem ser descartados. Adicionar esses itens e exibir "Memória: 75%" não transmite informações úteis ao usuário. Eu acho que é daí que vem a confusão generalizada.
Bennett McElwee
2
@BennettMcElwee Não há uma boa maneira de reduzir o uso de memória para um número simples, mas os usuários insistem nisso. Isso coloca os desenvolvedores em uma posição desconfortável - eles podem fornecer um número que nem sempre é útil ou não fornecer nenhum número. A maioria dos desenvolvedores de SO e GUI escolhe a primeira opção - eles fornecem um número que leva a muita confusão. Se sua pergunta for "mais memória RAM faria meu sistema funcionar melhor", a resposta é - é muito, muito difícil de dizer, mesmo para especialistas.
David Schwartz
2
@DavidSchwartz Sua resposta não explica isso, simplesmente afirma. Você pode fornecer links para apoiar essa reivindicação específica? Estou interpretando "Memória Física XX%" para significar que XX% da RAM instalada fisicamente está sendo usada no momento e não está disponível para outros processos. Acredito que sou validado pelo fato de que acima de 90% o sistema se torna propenso a bloqueios e, quando os aplicativos tentam alocar memória além de 100%, eles travam completamente. Na minha experiência, esse não é o regime padrão em que a maioria dos sistemas opera.
31715 John Neuhaus