Manutenção Avançada & Memória

Como Diagnosticar Vazamentos de Memória no Kernel com PoolMon e RAMMap

Edson Feitosa de Oliveira Júnior
Edson Feitosa de Oliveira Júnior
Fundador & Desenvolvedor Full Stack

Seu computador começa rápido depois de ligar, mas, com as horas, fica cada vez mais lento até travar, e o Gerenciador de Tarefas mostra memória quase cheia sem nenhum programa culpado? Esse é o sintoma clássico de um vazamento de memória no kernel, geralmente causado por um driver com defeito. Este guia mostra como usar as ferramentas gratuitas da Microsoft, RAMMap e PoolMon, para encontrar o responsável.

Memória de usuário e memória do kernel

Programas comuns usam memória no "modo usuário", que aparece por processo no Gerenciador de Tarefas. Drivers e o próprio Windows usam memória do kernel, dividida principalmente em:

Quando um driver pede memória e nunca devolve, o pool cresce sem parar. Como isso não pertence a nenhum programa visível, parece que a memória "sumiu".

Passo 1: confirme o sintoma

  1. Abra o Gerenciador de Tarefas (Ctrl + Shift + Esc) > Desempenho > Memória.
  2. Observe os valores Pool paginado e Pool não paginado.
  3. Anote os valores logo após ligar o PC e depois de algumas horas de uso.

Valores de algumas centenas de megabytes são normais. Se o pool não paginado passa de 1 a 2 GB e continua subindo, há um vazamento provável.

Passo 2: RAMMap para ver para onde vai a memória

O RAMMap, da coleção Sysinternals da Microsoft, mostra como toda a RAM está sendo usada.

  1. Baixe o RAMMap no site oficial da Microsoft (Sysinternals) e execute como administrador.
  2. Na aba Use Counts, veja as linhas Paged Pool e Nonpaged Pool.
  3. Verifique também Driver Locked e Metafile, que costumam crescer com problemas de drivers ou de cache do sistema de arquivos.

O RAMMap confirma onde está o consumo, mas não diz qual driver é o culpado. Para isso, usamos o PoolMon.

Passo 3: PoolMon para achar a "tag"

Cada alocação de memória do kernel é marcada com uma tag de quatro letras que identifica quem a fez. O PoolMon mostra essas tags e quanto cada uma consome.

  1. O PoolMon vem no Windows Driver Kit (WDK), disponível gratuitamente no site da Microsoft.
  2. Abra o Prompt de Comando como administrador e execute poolmon.
  3. Pressione B para ordenar por bytes usados e P para alternar entre pool paginado e não paginado.
  4. Observe a tag no topo e se a coluna de diferença entre alocações e liberações cresce continuamente.

Passo 4: descubra qual driver usa a tag

Com a tag em mãos, procure quais arquivos de driver a contêm. No Prompt de Comando, dentro da pasta de drivers:

cd C:\Windows\System32\drivers
findstr /m /l "Tag1" *.sys

Troque "Tag1" pela tag encontrada (diferencia maiúsculas). O resultado lista os arquivos .sys suspeitos. Pesquise o nome do arquivo para descobrir a qual dispositivo ou programa ele pertence.

Culpados mais comuns

Como corrigir

  1. Atualize o driver identificado pelo site do fabricante do dispositivo ou do notebook.
  2. Se o problema começou após uma atualização, volte para a versão anterior do driver no Gerenciador de Dispositivos.
  3. Desinstale o programa responsável, se não for essencial.
  4. Mantenha o Windows atualizado. Veja por que manter o Windows atualizado.

E os arquivos de dump?

Se o vazamento leva a uma tela azul, o Windows pode gravar um arquivo de despejo de memória (dump) em C:\Windows\Minidump ou C:\Windows\MEMORY.DMP. Ferramentas como o WinDbg analisam esse arquivo e frequentemente apontam o driver envolvido. Veja diagnóstico de telas azuis.

Para vazamentos em programas comuns, e não no kernel, veja vazamentos de memória RAM e travamentos.

Otimização de RAM no PruPru

O PruPru conta com rotinas de diagnóstico que identificam processos com consumo anômalo de memória física sem precisar reiniciar.

Baixar PruPru.exe Grátis →

Perguntas frequentes

Qual valor de pool não paginado é normal?

Normalmente fica entre algumas dezenas e algumas centenas de megabytes. Se passa de 1 a 2 GB e não para de crescer com o tempo, é provável que algum driver esteja vazando memória.

Onde baixar o PoolMon e o RAMMap?

O RAMMap faz parte das ferramentas Sysinternals, no site da Microsoft. O PoolMon vem no Windows Driver Kit (WDK), também gratuito no site da Microsoft.

Reiniciar resolve vazamento de memória?

Temporariamente, sim, porque a memória é liberada. Mas o problema volta enquanto o driver defeituoso não for atualizado, revertido ou removido.

Falar no WhatsApp agora