Localizar e corrigir vazamentos de memória no Windows 11/10

Um vazamento de memória(Memory Leak) é um extravio de recursos em um programa de computador devido à alocação de memória defeituosa. Isso acontece quando um local de RAM que não está em uso permanece inédito. Um vazamento de memória não deve ser confundido com um vazamento de espaço, que se refere a um programa que usa mais memória RAM(RAM) do que o necessário. Diz-se que um vazamento de memória em um sistema Windows 11/10/8/7 ocorreu quando a memória simplesmente não está acessível, apesar de não estar em uso.

Vazamentos de memória no Windows 11/10

Antes de começar, você deve saber que um vazamento de memória(Memory) é um problema de software a ser depurado – por exemplo, em Java , JavaScript , C/C++, Windows , etc. Não é necessário substituir fisicamente a RAM ou o disco rígido.

Vazamento de memória no Windows 10

Por que é ruim

É óbvio que um vazamento de memória é ruim porque é um bug, uma falha no sistema. Mas vamos descobrir como exatamente isso afeta o sistema:

  1. Como a memória não é liberada mesmo quando não está em uso, isso resulta no esgotamento da memória.
  2. O esgotamento da memória resulta no envelhecimento do software.
  3. A memória disponível reduzida leva ao aumento do tempo de resposta e ao baixo desempenho do sistema.
  4. Um vazamento de memória não verificado pode eventualmente levar à falha de um aplicativo.

Para identificar um vazamento de memória, um programador precisa ter acesso ao código-fonte do programa.

Localizando o vazamento

Para resolver um problema, precisamos identificá-lo primeiro. As etapas básicas para localizar um vazamento de memória são:

  1. Afirmação(Affirmation) : Determinar se ocorreu um vazamento.
  2. Localizando vazamento de memória no modo kernel(Finding Kernel-mode memory leak) : Localizando um vazamento causado por um componente de driver do modo kernel.
  3. Encontrando vazamento de memória no modo de usuário(Finding User-mode memory leak) : Localizando um vazamento causado por um driver ou aplicativo do modo de usuário.

Alocação de memória

Existem diferentes modos nos quais os aplicativos alocam RAM . Se o espaço não for liberado após o uso, o vazamento de memória ocorrerá independentemente do modo de alocação. Alguns padrões de alocação comuns são:

  1. Função HealAlloc(HealAlloc) para alocação de memória heap. Os equivalentes de tempo de execução C/C++ são malloc e new.
  2. Função VirtualAlloc(VirtualAlloc) para alocação direta do SO.
  3. APIs do Kernel32(Kernel32 APIs) para manter a memória do kernel para o aplicativo. Exemplo(Example) , CreateFile , CreateThread .
  4. APIs User32 e APIs Gdi32.

Evitar vazamentos de memória no Windows

Todos sabemos que é melhor prevenir do que remediar, então aqui estão algumas maneiras de evitar um vazamento de memória.

Hábitos de monitoramento

Vazamentos de memória no Windows 10

Você precisa ficar atento ao uso anormal de RAM por programas e aplicativos individuais. Você pode acessar o Gerenciador de Tarefas do Windows(Windows Task Manager) pressionando CTRL+SHIFT+ESC e adicionar as colunas como Handles , User Objects , GDI Objects , etc.

Isso ajudará você a monitorar facilmente o uso de recursos.

Leia(Read) : Quais são os tipos de memória em um computador?(What are the Types of Memory in a computer?)

Ferramentas da Microsoft(Microsoft) para diagnosticar vazamentos de memória

Várias ferramentas diagnosticam vazamentos de memória para vários modos de alocação:

  1. O Application Verifier(Application Verifier) diagnostica vazamentos de heap.
  2. O UMDH(UMDH) (um componente das Ferramentas de Depuração do Windows(Windows Debugging Tools) ) diagnostica vazamentos para processos individuais monitorando as alocações de memória heap.
  3. Trace Capture para uma análise completa do uso de RAM .
  4. O Xperf também rastreia os padrões de alocação de heap.
  5. CRT Debug Heap não apenas rastreia as alocações de heap, mas também permite práticas de codificação para minimizar vazamentos.
  6. O Detector de Vazamento de Memória JavaScript(JavaScript Memory Leak Detector) depura vazamentos de memória em códigos.

Dicas de uso

  1. Use kernel HANDLE se(HANDLE) outros ponteiros inteligentes para recursos Win32 e alocações de heap.
  2. Obtenha(Get) classes para gerenciamento automático de recursos para alocações de kernel da biblioteca ATL . O padrão C++ tem auto_ptr para alocações de heap.
  3. Encapsule(Encapsulate COM) ponteiros de interface COM em “ponteiros inteligentes” com a ajuda de _com_ptr_t ou _bstr_t ou _variant_t .
  4. Monitore(Monitor) o código .NET quanto ao uso anormal de memória.(.NET)
  5. Evite(Avoid) vários caminhos de saída para funções para permitir que as alocações sejam liberadas de variáveis ​​na maioria dos blocos até o final de uma função.
  6. Use exceções nativas somente após liberar todas as alocações no bloco _finally . Envolva(Wrap) todas as alocações de heap e manipula em ponteiros inteligentes para usar exceções C++.
  7. Sempre chame a função PropVariantClear antes de reinicializar ou descartar um objeto PROPVARIANT .

Solucionar problemas(Troubleshoot) de vazamentos de memória no Windows

Assim como as várias maneiras de evitar vazamentos de memória, existem várias maneiras de impedir vazamentos de memória. Mas antes de começar, lembre-se de criar primeiro um ponto de restauração do sistema .

1] Feche os processos e reinicie.

Se você perceber que um processo desnecessário está ocupando muita memória RAM(RAM) , poderá encerrar o processo no Gerenciador de Tarefas(Task Manager) . Você precisará reiniciar o dispositivo para que o espaço liberado esteja disponível para uso por outros processos. Sem um problema de vazamento de memória Reiniciar(Restart) não será resolvido. Um processo em particular que tem bugs para desacelerar o PC é o Runtime Broker . Tente se desabilitar isso sozinho funciona.

2] Ferramentas de diagnóstico de memória

Diagnóstico de memória do Windows

Para acessar a ferramenta de diagnóstico de memória(Memory Diagnostic Tool) integrada para Windows:

  1. Salve todo o seu trabalho importante.
  2. Pressione Win + R para abrir a janela Executar .(Run)
  3. Digite o comando mdsched.exe na janela Executar(Run) .
  4. Reinicie o computador.
  5. Após uma reinicialização, execute uma verificação básica ou vá para as opções ' Avançadas(Advanced) ' como ' Test mix ' ou ' Pass count '.
  6. Pressione F10 para iniciar o teste.

Estas ainda são correções temporárias.

3] Verifique se há atualizações de driver

Atualizar software de driver

Drivers desatualizados causam vazamentos de memória. Mantenha todos os drivers atualizados :

  1. Pressione Win + R e abra a janela Executar . (Run)Digite devmgmt.msc e pressione Enter . Ele irá levá-lo ao Gerenciador de Dispositivos(Device Manager) .
  2. Verifique(Check) se há drivers desatualizados e atualize-os todos.
  3. Para atualizações que você pode ter perdido, verifique no Windows Update .

Isso era simples.

4] Otimize o desempenho

Ajuste para melhor performance

Ajustar o desempenho do Windows gerenciará tudo, incluindo agendamento do processador e uso de memória para impedir vazamentos de memória. Siga esses passos:

  1. Clique com o botão direito do mouse em ' Este PC(This PC) ' e selecione Configurações ' Avançadas(Advanced) ' no painel esquerdo.
  2. Na guia ' Avançado ', vá para ' (Advanced)Desempenho(Performance) ', seguido de ' Configurações(Settings) '.
  3. Marque ' Ajustar para melhor desempenho(Adjust for best performance) ' e clique em OK .
  4. Reinicie(Restart) e verifique se o problema foi resolvido.

Se esta solução simples não funcionou, tente a próxima solução.

5] Desabilitar programas(Programs) em execução na inicialização(Startup)

Programas de inicialização

Desativar os programas problemáticos é a única maneira de se livrar do problema de vazamento de memória. Vá para o Gerenciador de Tarefas(Task Manager) e desative o programa problemático. Se você não sabe quais programas estão criando o problema, faça o seguinte:

  1. Vá para ' Gerenciador de Tarefas(Task Manager) '.
  2. Vá para ' Inicialização(Startup) '.
  3. Desative os programas de inicialização que(Disable the startup programs) você não precisa executar por padrão.

6] Desfragmentar disco rígido

Desfragmentação de disco

Embora o Windows 10(Windows 10) faça isso automaticamente, pode ser necessário desfragmentar os discos rígidos ocasionalmente para otimizar o desempenho:

  1. Vá para ' Este PC(This PC) ' ou ' Meu Computador(My Computer) '.
  2. Clique com(Right-Click) o botão direito do mouse no disco rígido do sistema (geralmente unidade C:).
  3. Vá para ' Ferramentas(Tools) ' em ' Propriedades(Properties) ' e selecione ' Otimizar(Optimize) '.
  4. Selecione a unidade para desfragmentar e selecione ' Analisar(Analyze) '.

Reinicie o computador após a nova fragmentação.

7] Arquivo ClearPage no desligamento

Está ficando complexo agora – mas não se preocupe. Veja como limpar o arquivo de página a cada desligamento(clear the Page File at every shutdown) :

  • Digite regedit em Pesquisar(Search) para iniciar o Editor do Registro(Registry Editor) .
  • Digite este caminho:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Altere o valor de ClearPageFileAtShutDown para '1'.( ClearPageFileAtShutDown to ‘1’.)
  • Salve as alterações e reinicie(Restart) o dispositivo.

Isto deve fazê-lo. Lembre-se de que o processo de desligamento levará um pouco mais de tempo.

9] Desativar Superbusca

Este serviço do Windows(Windows Service) otimiza o desempenho minimizando o tempo de inicialização. Ele permite que o Windows(Windows) gerencie o uso de RAM . A vida(Life) após desabilitar o Superfetch não é conveniente, mas faça isso se for necessário. Pelo menos tente isso sozinho para isolar o problema:

  1. Pesquise services.msc e vá para o Gerenciador de Serviços.
  2. Procure por ' Superfetch ' e clique com o botão direito do mouse para ir para ' Propriedades(Properties) '.
  3. Selecione ' Parar(Stop) '.
  4. Também ' Desabilitar(Disable) ' o serviço no menu suspenso.
  5. Reinicie o PC e verifique se o desempenho melhorou.

Ative o Superfetch se este não funcionou.

10] Verifique se há malware

Use um software antivírus de terceiros ou o Windows Defender interno do Windows 10 para verificar e eliminar malware. Certifique(Make) -se de que o antivírus esteja atualizado para oferecer suporte ao seu sistema operacional para que ele não acabe se tornando o motivo do vazamento de memória.

Todas as soluções que você pode precisar para encontrar ou evitar vazamentos de memória estão aqui. Você pode ler mais sobre vazamentos de memória no MSDN e no Microsoft .



About the author

Sou um desenvolvedor web com experiência em trabalhar com Windows 11 e 10. Também sou usuário do Firefox há muitos anos e me tornei bastante proficiente no uso do novo console de jogos Xbox One. Meus principais interesses estão no desenvolvimento de software, especificamente no desenvolvimento web e móvel, bem como na ciência de dados. Tenho muito conhecimento sobre vários sistemas de computador e seu uso, por isso posso fornecer feedback imparcial sobre vários programas ou serviços que você pode usar.



Related posts