Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você suspeitar que há um vazamento de memória no modo kernel, poderá usar a ferramenta PoolMon para determinar qual marca de pool está associada ao vazamento.
PoolMon (poolmon.exe) monitors pool memory usage by pool tag name. Essa ferramenta está incluída no WDK (Windows Driver Kit). For more information, see PoolMon.
Configurações do pool de GFlags
Some GFlags settings such as Special Pool, can affect how memory pools are used. For more information, see GFlags and Configuring Special Pool.
Use PoolMon
O cabeçalho PoolMon exibe o total de bytes de pool paginados e nãopagados. As colunas mostram o uso do pool para cada marca de pool. A exibição é atualizada automaticamente a cada poucos segundos. For example:
Memory: 16224K Avail: 4564K PageFlts: 31 InRam Krnl: 684K P: 680K
Commit: 24140K Limit: 24952K Peak: 24932K Pool N: 744K P: 2180K
## Tag Type Allocs Frees Diff Bytes Per Alloc
CM Paged 1283 ( 0) 1002 ( 0) 281 1377312 ( 0) 4901
Strg Paged 10385 ( 10) 6658 ( 4) 3727 317952 ( 512) 85
Fat Paged 6662 ( 8) 4971 ( 6) 1691 174560 ( 128) 103
MmSt Paged 614 ( 0) 441 ( 0) 173 83456 ( 0) 482
O PoolMon tem chaves de comando que classificam a saída de acordo com vários critérios. Para alterar a forma como os dados são classificados, selecione o atalho de teclado associado ao comando de classificação específico. Leva alguns segundos para que cada comando afete a exibição.
A tabela a seguir lista os comandos de classificação disponíveis:
| Command key | Operation |
|---|---|
| P | Limit the tags shown to nonpaged pool bytes (P), paged pool bytes (P, P), or both (Enter). Repeatedly selecting P cycles through the options. |
| B | Classificar marcas por uso máximo de bytes. |
| M | Classificar marcas por alocações máximas de bytes. |
| T | Classificar marcas alfabéticas por nome de marca. |
| E | Mostrar os totais paginados e nãopagados na parte inferior da exibição. |
| A | Classificar marcas por tamanho de alocação. |
| F | Classificar marcas por operações gratuitas. |
| S | Classificar marcas pela diferença entre alocações e liberais. |
| Q | Quit PoolMon. |
Exibir nomes de driver no PoolMon
Você pode usar o parâmetro PoolMon /g para exibir os nomes dos componentes do Windows e drivers comumente usados que atribuem cada marca de pool. Se você descobrir um problema em alocações com uma marca específica, esse recurso ajudará você a identificar o componente ou driver ofensivo.
The components and drivers are listed in the Mapped_Driver column, the right-most column in the display. The data for the Mapped_Driver column comes from the pooltag.txt file installed with the WDK.
The following command shows the use of the /g parameter to add the Mapped_Driver column:
poolmon /g "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\triage\pooltag.txt"
Exibir pools específicos
Use o /i parâmetro para mostrar marcas de pool que começam com uma cadeia de caracteres específica.
The following command shows the use of the /i parameter to add the string Hid:
poolmon /iHid? /g "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\triage\pooltag.txt"
A exibição é atualizada automaticamente a cada poucos segundos. For example:
Memory:33473120K Avail:20055132K PageFlts: 5 InRam Krnl:10444K P:1843072K
Commit:15035764K Limit:67027552K Peak:16677444K Pool N:1023400K P:1955448K
System pool information
Tag Type Allocs Frees Diff Bytes Per Alloc Mapped_Driver
HidC Paged 1667 ( 0) 1659 ( 0) 8 896 ( 0) 112 [hidclass.sys - HID Class d
HidC Nonp 17375 ( 0) 17256 ( 0) 119 19808 ( 0) 166 [hidclass.sys - HID Class d
HidP Nonp 1014 ( 0) 998 ( 0) 16 6704 ( 0) 419 [hidparse.sys - HID Parser]
Usar o utilitário PoolMon para encontrar um vazamento de memória
As etapas a seguir mostram uma abordagem para encontrar um vazamento de memória com o utilitário PoolMon:
Start PoolMon.
Identifique o tipo de pool a ser verificado:
Nonpaged pool: If you know the leak occurs in a nonpaged pool, select P once.
Paged pool: If you know the leak occurs in a paged pool, select P, P.
Both pools: If you're unsure about the leak source, select Enter, so both pool types are included. Don't select P.
Select B to sort the display by Maximum byte use.
Inicie o teste.
Copie e salve a saída da tela, como fazendo uma captura de tela.
A cada 30 minutos, copie e salve a saída atual em um novo arquivo.
Depois de ter vários arquivos de saída, compare as diferenças de dados. Determine quais bytes de marca estão aumentando.
Pare o teste e aguarde algumas horas. Determine quanto da marca foi liberada neste momento.
Normalmente, depois que um aplicativo atinge um estado de execução estável, ele aloca memória e memória livre na mesma taxa. Se ele alocar memória mais rapidamente do que a libera, seu uso de memória aumentará ao longo do tempo. Esse comportamento geralmente indica um vazamento de memória.
Endereçar o vazamento
Depois de identificar qual marca de pool está associada ao vazamento, você pode ter todas as informações necessárias sobre o vazamento. Se você precisar determinar qual instância específica da rotina de alocação está causando o vazamento, consulte Usar o depurador de kernel para localizar vazamentos de memória no modo kernel.