1 grande parte do seu uso de memória alta (2 GB) vem de um alto uso de Tabela de páginas .
Paraverquaisprocessosousam,instaleoWindowsPerformanceToolkit
que
wpr.exe -start ReferenceSet -filemode && timeout 5 && wpr.exe -stop C:\MemUsage.etl
Abra o MemUsage.etl
com o Windows Performance Analyzer (WPA.exe), expanda a entrada de memória
arrasteesolteográficoResidentSet
dalistadegráficosdaesquerdaparaopaineldeanálise:
Agora,movaacolunaPageCategory
paraoladoesquerdoeexpandaaPageTable
entry:
Aquivocêvêosprocessosquetêmousodealtapagetable.Nositecorreto(depoisdalinhaazul),vocêvêousodamemóriadatabeladepáginasemMBparacadaprocesso.
Alémdisso,ousocombinado(não)dopoolpaginadoédeaproximadamente2GB.
poolmon
( C:\Program Files (x86)\Windows Kits\Tools\x64\poolmon.exe
), classifique os dados por meio de P após o tipo de conjunto, de forma que o paginado não paginado / da próxima vez esteja no topo e através de B depois dos bytes, para ver a tag que mais utiliza a memória.
Agora veja qual pooltag usa a maior parte da memória, como mostrado aqui:
Agoraabraumpromptdocmdeexecuteocomandofindstr.Parafazerisso,abraopromptdocmdedigite"cd C: \ Windows \ System32 \ drivers", sem aspas. Em seguida, digite "findstr / s __ . ", onde __ é a tag (nome mais à esquerda em poolmon). Faça isso para ver qual driver usa essa tag:
Agora,váparaapastadedrivers(C:\Windows\System32\drivers
)ecliquecomobotãodireitodomousenodriveremquestão(intmsd.sys
noexemplodeimagemacima).CliqueemPropriedades,váparaaguiadetails
paraencontraronomedoproduto.Procureumaatualizaçãoparaesseproduto.
Corrigirosdoisproblemaspodelevarcercade4GBdevolta.
Combasenasuacapturadetelaemstackoverflow,4tags(VoSM,FILE,NtfxeProc)quepertencemàsfunçõesdoWindows.
Copie/coleestetextoemumnovoarquivotxterenomeie-oparaPoolTagLeak.wprp
<?xmlversion="1.0" encoding="utf-8"?>
<WindowsPerformanceRecorder Version="1.0" Author="MagicAndre1981" Copyright="MagicAndre1981" Company="MagicAndre1981">
<Profiles>
<SystemCollector Id="SystemCollector" Name="NT Kernel Logger">
<BufferSize Value="1024" />
<Buffers Value="1024" />
</SystemCollector>
<SystemProvider Id="SystemProvider">
<Keywords>
<Keyword Value="Pool" />
</Keywords>
<Stacks>
<Stack Value="PoolAllocation" />
<Stack Value="PoolAllocationSession" />
</Stacks>
<PoolTags>
<PoolTag Value="VoSM"/>
<PoolTag Value="File"/>
<PoolTag Value="Ntfx"/>
<PoolTag Value="Proc"/>
</PoolTags>
</SystemProvider>
<Profile Id="PoolUsage.Verbose.File" Name="PoolUsage" Description="Pool usage Tag 'Leak' " LoggingMode="File" DetailLevel="Verbose">
<Collectors>
<SystemCollectorId Value="SystemCollector">
<SystemProviderId Value="SystemProvider" />
</SystemCollectorId>
</Collectors>
</Profile>
<Profile Id="PoolUsage.Verbose.Memory" Name="PoolUsage" Description="Pool usage Tag 'Leak'" Base="PoolUsage.Verbose.File" LoggingMode="Memory" DetailLevel="Verbose" />
</Profiles>
</WindowsPerformanceRecorder>
Agora, execute wpr.exe -start C:\PoolTagLeak.wprp && timeout 600 && wpr.exe -stop C:\PoolusageUsage.etl
e tente reproduzir novamente o uso.
Arrastar & Elimine o Pool Graph
para o painel de análise, ordene as colunas para Type
, Pooltag
, Stack
.
AgoraváparaAIFO(alocadodentro,liberadodoladodefora,entãoesteéumpossívelvazamento),encontresuas4tagseexpandaapilhaparaverquaisfunçõesestatagusa.Combasenosnomesdasfunções,vocêpodevera"causa". Na minha demonstração, o Thre
tag (Thread) é usado pelo AVKCl.exe da G-Data porque ele inicia vários threads. Procure atualizações de driver / programa para corrigi-lo.