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 XPerfxperf: 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.