Encontre e corrija vazamentos de memória no Windows 10

Um vazamento de memória é um extravio de recurso em um programa de computador devido a uma alocação de memória defeituosa. Isso acontece quando um local de RAM que não está em uso permanece não liberado. 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 RAM do que o necessário. Diz-se que um vazamento de memória em um sistema Windows 10/8/7 ocorreu quando a memória simplesmente não estava acessível, apesar de não estar em uso.

Vazamentos de memória no Windows 10

Antes de começar, você deve saber que o vazamento de memória é 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 isso é 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 em esgotamento da memória.
  2. O esgotamento da memória resulta no envelhecimento do software.
  3. A redução da memória disponível leva a um tempo de resposta maior e a um desempenho ruim do sistema.
  4. O vazamento de memória não verificado pode levar ao travamento 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 primeiro identificá-lo. As etapas básicas para localizar um vazamento de memória são:

  1. Afirmação : Determinar se ocorreu um vazamento.
  2. Encontrando vazamento de memória no modo kernel : Localizando um vazamento causado por um componente de driver do modo kernel.
  3. Encontrando vazamento de memória no modo de usuário : Localizando um vazamento causado pelo driver ou aplicativo do modo de usuário.

Alocação de memória

Existem diferentes modos em que 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 para alocação de memória heap. Os equivalentes de tempo de execução C / C ++ são malloc e novos.
  2. Função VirtualAlloc para alocação direta do SO.
  3. APIs Kernel32 para manter a memória do kernel para o aplicativo. Exemplo, CreateFile, CreateThread.
  4. APIs User32 e APIs Gdi32.

Prevenindo vazamentos de memória

Todos nós sabemos que a prevenção é melhor do que remediar, então aqui estão algumas maneiras de prevenir um vazamento de memória.

Hábitos de monitoramento

Vazamentos de memória no Windows 10

Você precisa ficar de olho no uso anormal de RAM por programas e aplicativos individuais. Você pode ir para o Gerenciador de Tarefas do Windows pressionando CTRL + SHIFT + ESC e adicionar colunas como Handles, Objetos de Usuário, Objetos GDI, etc.

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

Ferramentas da 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 diagnostica vazamentos de heap.
  2. O UMDH (um componente das Ferramentas de Depuração do Windows) 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. O CRT Debug Heap não apenas rastreia 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 depura vazamentos de memória nos códigos.

Dicas de uso

  1. Use HANDLE se do kernel e outros ponteiros inteligentes para recursos Win32 e alocações de heap.
  2. Obtenha 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 ponteiros de interface COM em “ponteiros inteligentes” com a ajuda de _com_ptr_t ou _bstr_t ou _variant_t .
  4. Monitore o código .NET quanto ao uso anormal de memória.
  5. Evite vários caminhos de saída para funções para permitir que as alocações sejam liberadas de variáveis ​​na maioria dos blocos ao final de uma função.
  6. Use exceções nativas somente depois de liberar todas as alocações no bloco _finally. Envolva todos os heap e alocações de tratamento em ponteiros inteligentes para usar exceções C ++.
  7. Sempre chame a função PropVariantClear antes de reinicializar ou descartar um objeto PROPVARIANT.

Solução de problemas de vazamento 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, finalize o processo no Gerenciador de Tarefas. Você precisará reiniciar o dispositivo para que o espaço liberado esteja disponível para uso por outros processos. Sem Reiniciar o problema de vazamento de memória não será resolvido. Um processo específico que possui bugs para tornar o PC lento é o Runtime Broker. Experimente se desativar 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 embutida para Windows:

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

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

3] Verifique se há atualizações do 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 . Digite devmgmt.msc e pressione Enter. Isso o levará ao Gerenciador de dispositivos .
  2. Verifique se há drivers desatualizados e atualize todos eles.
  3. Para atualizações que você pode ter perdido, verifique no Windows Update.

Isso era simples.

4] Otimize o desempenho

Ajuste para uma melhor performance

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

  1. Clique com o botão direito em ' Este PC ' e selecione as configurações ' Avançadas ' no painel esquerdo.
  2. Na guia ' Avançado ', vá para ' Desempenho ', seguido de ' Configurações '.
  3. Marque ' Ajustar para melhor desempenho ' e clique em OK .
  4. Reinicie e verifique se o problema foi resolvido.

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

5] Desativar programas em execução na inicialização

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 e desative o programa de criação de problemas. Se você não sabe quais programas estão criando o problema, faça o seguinte:

  1. Vá para ' Gerenciador de Tarefas '.
  2. Vá para ' Inicializar '.
  3. Desative os programas de inicialização que você não precisa executar por padrão.

6] Desfragmentar disco rígido

Desfragmentação de disco

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

  1. Vá para ' Este PC ' ou ' Meu computador '.
  2. Clique com o botão direito do mouse no disco rígido do sistema (geralmente unidade C:).
  3. Vá para ' Ferramentas ' em ' Propriedades ' e selecione ' Otimizar '.
  4. Selecione a unidade para desfragmentar e selecione ' Analisar '.

Reinicie seu 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 paginação a cada desligamento:

  • Digite regedit em Pesquisar para iniciar o Editor do Registro.
  • Insira este caminho:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Gerenciamento de memória
  • Altere o valor de ClearPageFileAtShutDown para '1'.
  • Salve as alterações e reinicie o dispositivo.

Isso deve bastar. Lembre-se de que seu processo de desligamento demorará um pouco mais.

9] Desativar Superfetch

Este serviço do Windows otimiza o desempenho, minimizando o tempo de inicialização. Ele permite que o Windows gerencie o uso de RAM. A vida após desabilitar o Superfetch não é conveniente, mas faça-o se precisar. 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 para ir para ' Propriedades '.
  3. Selecione ' Parar '.
  4. Além disso, ' desabilite ' o serviço no menu suspenso.
  5. Reinicie o PC e verifique se o desempenho melhorou.

Habilite Superfetch se este não funcionar.

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-se de que o antivírus esteja atualizado para oferecer suporte ao seu sistema operacional para que ele não se torne o motivo do vazamento de memória.

Todas as soluções de 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 na Microsoft.

Original text


Vazamentos de memória no Windows 10