Escritório

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

Como corrigir o uso de memória alta / RAM no Windows 10

Como corrigir o uso de memória alta / RAM no Windows 10

Índice:

Anonim

A Memory Leak é um posicionamento incorreto do recurso em um programa de computador devido à alocação incorreta de memória. Isso acontece quando um local de RAM não 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 do que o necessário. Um vazamento de memória em um sistema Windows 10/8/7 é dito ter ocorrido quando a memória não está acessível, apesar de não estar em uso.

Vazamentos de memória no Windows 10

Antes de começar, você deve saber que Vazamento de memória é um problema de software para depuração - por exemplo, em Java, JavaScript, C / C ++, Windows, etc. Substituir RAM ou disco rígido não é necessário.

Por que é ruim

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

  1. Como a memória não é liberada mesmo quando não está em uso, resulta em esgotamento da memória.
  2. Exaustão da memória resulta em envelhecimento do software.
  3. Memória disponível reduzida leva a um aumento do tempo de resposta e desempenho ruim do sistema.
  4. 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 o 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 : Determinando se um vazamento ocorreu.
  2. Encontrando vazamento de memória no modo kernel : Localizando um vazamento causado por um componente de driver no modo kernel.
  3. Encontrando vazamento de memória no modo de usuário : Localizando um vazamento causado pelo driver ou aplicativo de 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 para alocação de memória de heap. Os equivalentes de tempo de execução C / C ++ são malloc e new.
  2. VirtualAlloc função para alocação direta do sistema operacional.
  3. Kernel32 APIs para armazenar a memória do kernel para o aplicativo. Exemplo, CreateFile, CreateThread.
  4. APIs User32 e APIs Gdi32.

Prevenção de vazamentos de memória

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

Monitorando os hábitos

Você precisa manter-se atento ao uso anormal de RAM por programas e aplicativos individuais. Você pode ir para o Gerenciador de Tarefas do Windows pressionando CTRL + SHIFT + ESC e adicione as colunas Handles, User Objects, GDI Objects, etc.

Isso ajudará você 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. Diagnósticos do Application Verifier vazamentos de heap.
  2. UMDH (um componente do Windows Debugging Tools) diagnostica vazamentos para processos individuais monitorando alocações de memória de heap
  3. O Rastreio de Rastreio também analisa o uso de RAM.
  4. O Xperf também rastreia 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. Detector depura vazamentos de memória em códigos.

Dicas de uso

  1. Use o kernel HANDLE se outros indicadores inteligentes para recursos Win32 e alocações de heap.
  2. Obtenha classes para o gerenciamento automático de recursos para alocações de kernel a biblioteca ATL. Padrão C ++ tem auto_ptr para alocações de heap.
  3. Encapsular ponteiros de interface COM dentro de "ponteiros inteligentes" com a ajuda de _com_ptr_t ou _bstr_t ou _variant_t .
  4. Monitore o código.NET para uso de memória anormal.
  5. Evite vários caminhos de saída para funções para permitir que alocações sejam liberadas de variáveis ​​na maioria dos blocos até o final de uma função.
  6. Use apenas exceções nativas depois de liberar todas as alocações no bloco _finally. Envolva todo o heap e manipule alocações em ponteiros inteligentes para usar as exceções do C ++.
  7. Sempre chame a função PropVariantClear antes de reinicializar ou descartar um objeto PROPVARIANT.

Solucionando problemas de vazamentos de memória no Windows

Assim como as várias maneiras de evitar vazamentos de memória, há várias maneiras de interromper vazamentos de memória.

1] Feche os processos e reinicie

Se você perceber que um processo desnecessário está ocupando muita RAM, poderá 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 um problema de vazamento de memória de reinicialização não será resolvido. Um processo específico que possui bugs para desacelerar o PC é o Runtime Broker. Tente se desabilitar 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. Pressione Win + R para abrir a janela Executar .
  3. Digite o comando mdsched.exe na janela Executar .
  4. Reinicie o computador.
  5. Depois de um reinicie, faça uma varredura básica ou vá para as opções ` Avançado ` como ` Mistura de teste ` ou ` Contagem de passes `.
  6. Pressione F10 para iniciar o teste.

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

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

Os 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. Ele levará você 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 foi simples.

4] Otimizar desempenho

Ajustar o desempenho do Windows gerenciará tudo, incluindo o agendamento do processador eo uso de memória para interromper o vazamento de memória. Siga estas etapas:

  1. Clique com o botão direito do mouse em ` Este PC ` e selecione ` Avançado ` no painel esquerdo.
  2. Abaixo de ` Avançado `guia, vá para` Desempenho `, seguido por` 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 funcionou, 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 solução de problemas. Se você não souber quais programas estão criando o problema, faça o seguinte:

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

6] Desfragmentação do disco rígido

Embora o Windows 10 faça isso automaticamente, talvez seja 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 `sob` Propriedades `e selecione` Otimizar `.
  4. Selecione a unidade para desfragmentar e selecione` Analisar `.

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

7] Arquivo do ClearPage no desligamento

Está ficando complexo agora - mas não se preocupe. Veja como limpar o arquivo de paginação a cada desligamento:

  1. Digite regedit em Pesquisar para iniciar o Editor do Registro
  2. Digite este caminho: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  3. Altere o valor de ClearPageFileAtShutDown para `1`.
  4. Salve as alterações e Reinicie o dispositivo.

Isso deve ser feito.

9] Desativar Superfetch

Esse 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 a desativação do Superfetch não é conveniente, mas faça-o se for necessário. Pelo menos tente isolar o problema:

  1. Search 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 `.
  3. Selecione ` Parar `.
  4. Também ` Desativar ` o serviço no menu suspenso.
  5. Reinicie o PC e verifique se o desempenho foi melhorado.

Habilite o Superfetch se este não funcionar.

10] Verifique se há malware

Use um software antivírus de terceiros ou o Windows Defender do Windows 10 para verificar e eliminar malware. Certifique-se de que o antivírus esteja atualizado para suportar seu sistema operacional, para que ele não se torne o motivo do vazamento de memória.

Toda solução que você talvez precise encontrar ou evitar vazamentos de memória está aqui. Você pode ler mais sobre vazamentos de memória no MSDN e na Microsoft.