Como encontrar fonte de vazamento de memória no Windows 7?


10

Eu tenho uma máquina com Windows 7 que fica com pouca memória RAM. Consigo ver a RAM livre diminuindo por algumas horas até o ponto em que a máquina deixa de responder. Eu verifiquei a lista de processos e nenhum deles ocupa tanta memória RAM.

Também verifiquei o número de identificadores por processo e vários outros indicadores, mas ainda não consigo descobrir por que a máquina fica sem memória RAM.

Existe alguma maneira de verificar como a memória é usada no Windows?

Editar

Aqui está o resultado de tasklistalguns minutos antes que a máquina deixe de responder:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        300 K
smss.exe                       196 Services                   0      1,024 K
csrss.exe                      272 Services                   0      4,336 K
wininit.exe                    320 Services                   0      4,184 K
csrss.exe                      332 Console                    1      3,516 K
winlogon.exe                   372 Console                    1      6,316 K
services.exe                   416 Services                   0      8,112 K
lsass.exe                      432 Services                   0     10,088 K
lsm.exe                        440 Services                   0      3,664 K
svchost.exe                    548 Services                   0      8,152 K
svchost.exe                    620 Services                   0      6,564 K
svchost.exe                    660 Services                   0     15,764 K
LogonUI.exe                    724 Console                    1     18,428 K
svchost.exe                    768 Services                   0      7,992 K
svchost.exe                    828 Services                   0      9,724 K
svchost.exe                    852 Services                   0     28,092 K
svchost.exe                    176 Services                   0     13,096 K
spoolsv.exe                    824 Services                   0     10,608 K
svchost.exe                    952 Services                   0     11,632 K
svchost.exe                   1076 Services                   0      8,524 K
fshoster32.exe                1120 Services                   0      9,148 K
fsorsp.exe                    1200 Services                   0      8,036 K
fsgk32.exe                    1324 Services                   0      3,084 K
cygrunsrv.exe                 1552 Services                   0      5,852 K
conhost.exe                   1864 Services                   0      2,996 K
sshd.exe                      1896 Services                   0      7,804 K
FSMA32.EXE                    2024 Services                   0      1,628 K
svchost.exe                   1320 Services                   0      5,092 K
fssm32.exe                    1704 Services                   0      2,196 K
FSHDLL64.EXE                  2120 Services                   0        644 K
SearchIndexer.exe             3260 Services                   0     13,596 K
sshd.exe                    138920 Services                   0      8,696 K
sshd.exe                    138448 Services                   0      8,696 K
sshd.exe                    138660 Services                   0      8,696 K
bash.exe                    137924 Services                   0      5,380 K
bash.exe                    137820 Services                   0      3,832 K
SAV32CLI.EXE                136344 Services                   0    133,868 K
WmiPrvSE.exe                139444 Services                   0      7,168 K
sshd.exe                    139672 Services                   0      8,692 K
sshd.exe                    139876 Services                   0      8,684 K
bash.exe                    139992 Services                   0      5,432 K
bash.exe                    140040 Services                   0      3,996 K
bash.exe                    140200 Services                   0      5,400 K
bash.exe                    139424 Services                   0      4,048 K
typeperf.exe                139300 Services                   0      5,372 K
sleep.exe                   138268 Services                   0      2,272 K
sshd.exe                    139612 Services                   0      7,168 K
sshd.exe                    137720 Services                   0      5,700 K
bash.exe                    139524 Services                   0      5,304 K
bash.exe                    138952 Services                   0      3,756 K
tasklist.exe                137580 Services                   0      5,164 K
bash.exe                    139460 Services                   0      5,452 K
bash.exe                    139796 Services                   0        104 K

Nesse ponto, wmic OS get FreePhysicalMemory /Valuerelata cerca de 400 MB de memória livre de 2 GB.

RamMap:

insira a descrição da imagem aqui

Gerenciador de tarefas:

insira a descrição da imagem aqui


1
Você pode reiniciar o computador e publicar uma captura de tela dos seus processos do Gerenciador de Tarefas? E certifique-se de exibir processos de todos os usuários, por favor. Se você tiver mais de 50-60 após uma reinicialização, então há definitivamente coisas que você pode fazer, mas se nada parece fishy, então as coisas podem ficar complicado ..
— MonkeyZeus

1
Você está ficando sem memória virtual ou física. A solução e a causa são diferentes. Um aviso de pouca memória virtual é um problema de configuração, devido à falta de memória física, significa que você deve executar muitos processos.
— Ramhound

1
Você tem alguma evidência de que a causa é um vazamento de memória? Parece que você tem uma boa evidência de que é não um vazamento de memória. (Embora possa ser um motorista preso, eu acho.)
— David Schwartz

Obrigado pelo feedback. Adicionei mais algumas informações à postagem, em particular a lista de tarefas. É a memória física livre que continua diminuindo ao longo do tempo. É possível verificar como é usado?
— precisa

Respostas:


8

O consumo de memória alta provém de um alto uso da tabela de páginas . Para ver quais processos o utilizam, instale o Windows Performance Toolkit , abra um prompt de comando como administrador e execute este comando:

xperf -on ReferenceSet -BufferSize 1024 -MaxFile 512 -FileMode Circular  && timeout 5 && xperf -d MemUsage.etl

Abra o MemUsage.etlWindows Performance Analyzer (WPA.exe), arraste e solte o gráfico "ResidentSet" da lista de gráficos à esquerda no painel de análise:

insira a descrição da imagem aqui

Agora mova a coluna "Categoria da página" para o lado esquerdo e expanda a entrada "Tabela da página":

insira a descrição da imagem aqui

Aqui você vê os processos com alto uso de paginação. No site certo (após a linha azul), você vê o uso de memória da tabela de páginas em MB para cada processo.


no windows8.1, não vejo 'residentet' como uma opção de gráfico disponível. Como posso conseguir? uma bandeira xperf diferente?
— Akira

Eu respondo meu próprio comentário: update xperf.
— Akira

Isso não funciona para mim no Windows 7 - a primeira chamada para XPerf dáxperf: error: NT Kernel Logger: Invalid flags. (0x3ec).
— benshepherd

@benshepherd para mim funciona. Certifique-se de usar o WPT mais recente do SDK 8.1: dropbox.com/s/e5ol59a6n9g3ctb/Win7_xperf.png
— magicandre1981

1
Eu finalmente descobri o problema, foi Lenovo "RapidBoot Shield" e removê-lo resolvido o meu problema: superuser.com/a/850346/79763
— sparrowt

0

as únicas coisas "estranhas" que posso ver aqui são estas:

  • você tem um processo chamado scan.exeque monopoliza 98% da CPU agora
  • você tem um processo chamado fssm32.exeque possui 9 milhões de falhas de página. fssm32.exeparece um programa do antivírus f-secure.
  • você também tem um processo chamado SAV32CLI.EXEque consome mais 130mb de memória. parece que você se sente melhor protegido para executar dois antivírus: f-secure e sophos ao mesmo tempo.

a captura de tela rammap parece boa para mim: você tem um conjunto de ~ 400mb de arquivos em cache, 85mb deles em uso ativo, 300mb + no modo de espera (o que significa que eles são liberados assim que você precisar de mais memória ram). olhando para a quantidade de processos sshd.exe e bash.exe, também parece legítimo.

a melhor maneira de aprender o funcionamento interno de como o Windows gerencia a memória é esta conversa aqui: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 .. você já está usando algumas das ferramentas que o palestrante desenvolveu .


1
meus contatos da Microsoft (Microsoft Premier Field Engineers) também me disseram que vários 100 MB de tabela de páginas não são normais para o Windows.
— magicandre1981
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.