GFlags e PageHeap

Esta versão do GFlags inclui a funcionalidade do PageHeap (pageheap.exe), uma ferramenta que permite o monitoramento de alocação de heap no Windows. O PageHeap permite que os recursos do Windows que reservam memória no limite de cada alocação detectem tentativas de acessar a memória além da alocação.

As opções de heap de página no GFlags permitem que você selecione a verificação de heap padrão, que grava padrões de preenchimento no final de cada alocação de heap e examina os padrões quando as alocações são liberadas, ou a verificação de heap de página inteira, que coloca uma página inacessível no final de cada alocação para que o programa pare imediatamente se acessar a memória além da alocação. Como a verificação completa de heap usa uma página inteira de memória para cada alocação, seu uso generalizado pode causar escassez de memória do sistema.

  • Para habilitar a verificação de heap de página padrão para todos os processos, use gflags /r +hpa ou gflags /k +hpa.

  • Para habilitar a verificação de heap de página padrão para um processo, use gflags /p /enable ImageFileName.

  • Para habilitar a verificação de heap de página inteira para um processo, use gflags /i ImageFileName +hpa ou gflags /p /enable ImageFileName /full.

Todas as configurações de heap de página, exceto /k, são armazenadas no Registro e permanecem em vigor até que você as altere.

Observe que a funcionalidade PageHeap só estará ativa se a verificação PageHeap tiver sido habilitada antes da imagem ser iniciada. Para processos de longa execução, como o W3WP para IIS em um ambiente de produção, isso significa que a verificação não começará até que o processo tenha sido reiniciado. Da mesma forma, se o PageHeap for desabilitado enquanto o processo estiver em execução, a verificação continuará até que o processo seja reiniciado. Emitir o mesmo comando GFlags repetidamente, enquanto o processo está em execução ou não, não tem efeito adicional. Como implicação disso, habilitar o PageHeap usando o comando GFlags é idempotente.

As configurações do PageHeap também são persistentes entre terminações do processo e reinicializações do sistema. As reinicializações do sistema podem ser usadas para reinicializar um processo depois que as configurações desejadas do PageHeap são definidas, mas não podem ser usadas para desabilitar a funcionalidade depois que ela é habilitada. A desativação do PageHeap deve ser feita explicitamente.

Tenha cuidado ao interpretar a caixa de seleção Habilitar heap de página para um arquivo de imagem na caixa de diálogo GFlags. Ele indica que a verificação de heap de página está habilitada para um arquivo de imagem, mas não indica se é verificação de heap de página completa ou padrão. Se a verificação resultar da seleção da caixa de seleção, a verificação de heap de página inteira será habilitada para o arquivo de imagem. No entanto, se a verificação resultar do uso da interface de linha de comando, a verificação poderá representar a habilitação da verificação de heap de página completa ou padrão para o arquivo de imagem.

Para determinar se a verificação de heap de página completa ou padrão está habilitada para um programa, na linha de comando, digite gflags /p. Na exibição resultante, rastreamentos indica que a verificação de heap de página padrão está habilitada para o programa e rastreamentos completos indica que a verificação de heap de página inteira está habilitada para o programa.