Windbg: Não é possível obter o próximo objeto depois de um objeto livre

3

Eu sei que a fragmentação geralmente ocorre quando um objeto coletado por coleta de lixo é marcada como um bloco "livre", mas o objeto ocupando o próximo espaço de endereço é fixado. Eu posso conseguir uma lista de Free objetos, mas não consigo descobrir o que está preso ao lado dele.

Eu despejo o objeto, encontro seu tamanho e adiciono seu tamanho ao endereço do objeto original para obter o próximo objeto, assim:

0: 000 > ! do 0a2467c8 Objeto Livre Tamanho 438312 (0x6b028) bytes

0: 000 > ! do 0a2467c8 + 438312  Objeto inválido

Eu nunca consigo que o próximo objeto fixado seja exibido. É sempre inválido. O que eu estou fazendo errado aqui?

    
por Jeff Costa 27.07.2009 / 16:42

1 resposta

1

O WinDbg nem sempre funciona como planejado. Confira o mais recente utilitário de Mark Russinovich.

ProcDump v1.0, um 1,0 vale cada onça de menção. link

ProcDump é um utilitário de linha de comando cuja finalidade principal é monitorar um aplicativo para picos de CPU e gerar despejos de memória durante um pico que um administrador ou desenvolvedor pode usar para determinar a causa do pico. ProcDump também inclui monitoração de janela suspensa (usando a mesma definição de uma interrupção de janela que o Windows e o Gerenciador de Tarefas usam) e monitoramento de exceção não tratada. Ele também pode servir como um utilitário de despejo de processo geral que você pode incorporar em outros scripts.

    
por 27.07.2009 / 19:45