Memória

Como encontrar e corrigir vazamentos de memória no Windows 10

Como encontrar e corrigir vazamentos de memória no Windows 10

UMA Vazamento de memória é um extravio de recursos em um programa de computador devido a uma falha na alocação de memória. 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.

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. Uma vez que a memória não é liberada, mesmo quando não está em uso, resulta no 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 aumento do tempo de resposta e baixo desempenho do sistema.
  4. Um 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: Determinando se um vazamento ocorreu.
  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: Localizar um vazamento causado por um driver ou aplicativo em 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 é melhor prevenir do que remediar, então aqui estão algumas maneiras de prevenir um vazamento de memória.

Hábitos de monitoramento

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, User Objects, GDI Objects, etc.

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

Leitura: Quais são os tipos de memória em um computador?

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. UMDH (um componente das Ferramentas de Depuração do Windows) diagnostica vazamentos para processos individuais monitorando 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 alocações de heap, mas também permite práticas de codificação para minimizar vazamentos.
  6. Detector de vazamento de memória JavaScript depura vazamentos de memória em códigos.

Dicas de uso

  1. Use kernel LIDAR COMse outros indicadores 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. Encapsular ponteiros de interface COM em "ponteiros inteligentes" com a ajuda de _com_ptr_t ou _bstr_t ou _variant_t.
  4. Monitorar o .Código NET para 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 _finalmente. Envolva todo o heap e manipule as alocações em ponteiros inteligentes para usar exceções C ++.
  7. Sempre ligue para o PropVariantClear função 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 um ponto de restauração do sistema primeiro.

1] Fechar processos e reiniciar.

Se você perceber que um processo desnecessário está ocupando muita memória RAM, você pode encerrar 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 tem bugs para desacelerar o PC é o Runtime Broker. Tente se desativar isso sozinho funciona.

2] Ferramentas de diagnóstico de memória

Para acessar a ferramenta de diagnóstico de memória embutida para Windows:

  1. Salve todo o seu trabalho importante.
  2. Aperte Win + R para abrir o Corre janela.
  3. Digite o comando mdsched.Exe no Corre janela.
  4. Reinicie o PC.
  5. Após reiniciar, execute uma verificação básica ou vá para o 'Avançado'opções como'Mix de teste' ou 'Contagem de passes'.
  6. Aperte F10 para começar o teste.

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

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

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

  1. Aperte Win + R e abra o Corre janela. Modelo 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, você pode ter perdido, verifique no Windows Update.

Isso era simples.

4] Otimize o desempenho

Ajustar o Windows para desempenho 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'Avançado'configurações no painel esquerdo.
  2. Debaixo de 'Avançado'guia, vá para'Desempenho', seguido pela 'Definições'.
  3. Verificar 'Ajuste para uma melhor performance'e clique 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

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. Vamos para 'Gerenciador de tarefas'.
  2. Vamos para 'Comece'.
  3. Desative os programas de inicialização que você não precisa executar por padrão.

6] Desfragmentar disco rígido

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

  1. Vamos para 'Este PC' ou 'Meu Computador'.
  2. Clique com o botão direito no disco rígido do sistema (geralmente unidade C:).
  3. Vamos para 'Ferramentas' sob 'Propriedades'e selecione'Otimize'.
  4. Selecione a unidade para desfragmentar e selecione 'Analisar'.

Reinicie o 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 página a cada desligamento:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Gerenciamento de memória

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

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 desativar o Superfetch não é conveniente, mas faça-o se precisar. Pelo menos tente isso sozinho para isolar o problema:

  1. Procurar Serviços.msc e vá para o gerente de serviços.
  2. Olhe para 'Superfetch'e clique com o botão direito para ir para'Propriedades'.
  3. Selecione 'Pare'.
  4. Também 'Desabilitar'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.

Cada solução que você possa precisar para encontrar ou evitar vazamentos de memória está bem aqui. Você pode ler mais sobre vazamentos de memória no MSDN e Microsoft.

Melhores jogos de linha de comando para Linux
A linha de comando não é apenas sua maior aliada ao usar o Linux - ela também pode ser uma fonte de entretenimento porque você pode usá-la para jogar ...
Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...
Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...