Compartilhar via


Criação de perfil na.NET Framework 2.0

A API de criação de perfil foi aprimorada na.NET Framework versão 2.0 para fornecer recursos adicionais. A nova funcionalidade é exposta por meio de duas novas interfaces: ICorProfilerCallback2 e ICorProfilerInfo2.

Um gerador de perfil DLL que foi escrito para o.NET Framework versão 1.0 ou 1.1 não funcionará corretamente na.NET Framework 2.0 ambiente common language runtime (CLR). Para atualizar o seu gerador de perfil DLL para trabalhar com a versão 2.0 ou posterior, você deve implementar a ICorProfilerCallback2 interface. O ICorProfilerInfo2 interface herda de ICorProfilerInfo interface e introduz novos métodos oferece suporte à interação aprimorada com o CLR.

As alterações são discutidas nas seções a seguir:

  • Genéricos

  • Divisão de código

  • Remoção de depuração em andamento

  • Retornos de chamada com o Native Image Generator

  • Avançado retornos de chamada de coleta de lixo

  • Objetos congelados

  • Alterações de API diversas

Além de alterações de API, um HRESULT de novo, CORPROF_E_UNSUPPORTED_CALL_SEQUENCE, foi adicionado. Para obter informações sobre os cenários em que esse HRESULT pode ser retornada, consulte HRESULT DE CORPROF_E_UNSUPPORTED_CALL_SEQUENCE.

Genéricos

A introdução de genéricos no tempo de execução causou três alterações na API de criação de perfil:

Voltar ao topo

Divisão de código

Os assemblies na.NET Framework já passaram por uma otimização de desempenho. Código nativo pré-compilado foi dividido em várias regiões por função. Portanto, os existentes ICorProfilerInfo::GetCodeInfo método não é mais corretamente pode descrever a extensão de código nativo de uma função. Geradores de perfis devem alternar para o uso mais geral ICorProfilerInfo2::GetCodeInfo2 método em vez disso.

Voltar ao topo

Remoção de depuração em andamento

No.NET Framework 2.0, no processo de depuração foi substituído por um conjunto de funcionalidades que é consistente com a API de criação de perfil. O instantâneo da pilha (consulte a Visão geral de criação de perfil) e a inspeção de objeto recurso são o resultado.

Voltar ao topo

Retornos de chamada com o Native Image Generator

Otimizações significativas do Native Image Generator (NGen. exe) moveu muito mais trabalho do tempo de execução para a imagem nativa tempo de geração. Isso levou as seguintes alterações no comportamento da API de criação de perfil:

  • Para a maioria das funções, JITCachedFunctionSearch retornos de chamada não são recebidos em imagens nativas. Um gerador de perfil tem duas opções, dependendo de como ele usa retornos de chamada:

    • Se o profiler usa retornos de chamada para coletar informações sobre uma função, ele pode alternar para um esquema em que informações são coletadas sobre uma determinada função somente quando essa função é encontrada primeiro durante a execução do programa.

    • Se o profiler usa retornos de chamada para forçar uma função a ser just-in-time (JIT) compilado para fins de instrumentação, ele pode usar imagens nativas do profiler aprimorado. Para obter mais informações, consulte Geração de código na API de criação de perfil.

  • Para a maioria dos tipos, ClassLoad retornos de chamada não são recebidos em imagens nativas. Geradores de perfis devem usar técnicas de avaliação do tempo de execução (também chamado de avaliação lenta) para essas classes. Não é necessário alterar seu comportamento geradores de perfis que já estão usando o profiler aprimorado imagens nativas. No entanto, um gerador de perfil deve não alternar para imagens nativas do profiler aprimorado, a menos que ele precisa essas imagens por outros motivos porque profiler aprimorado imagens nativas são significativamente diferentes de imagens regulares.

Voltar ao topo

Avançado retornos de chamada de coleta de lixo

Os retornos de chamada de coleta de lixo foram aprimorados de diversas maneiras. Retornos de chamada notificam o profiler agora que alças de coleta de lixo tenham sido criadas ou destruído, fornecem informações sobre o enfileiramento de mensagens de objetos para ser finalizado e usar o Collect método para forçar uma coleta de lixo. O ICorProfilerCallback2::RootReferences2 método, que é uma extensão de ICorProfilerCallback::RootReferences, fornece informações sobre o tipo de cada raiz. Finalmente, o ICorProfilerCallback2::SurvivingReferences método relata o layout dos objetos na heap causado por uma coleta de lixo não compactar.

Voltar ao topo

Objetos congelados

Congelada objetos, que são novos na.NET Framework 2.0, são objetos constantes que são inicializados imagem nativa em tempo de geração e gravados na imagem nativa. Objetos congelados não são realocados pela coleta de lixo, mas eles podem ser consultados por objetos de coleta de lixo. O novo ICorProfilerInfo2::EnumModuleFrozenObjects método permite que os criadores de perfis enumerar os objetos congelados.

Voltar ao topo

Alterações de API diversas

A.NET Framework 2.0 também inclui as seguintes alterações de API:

Voltar ao topo

Consulte também

Conceitos

Visão geral de criação de perfil