Identificando Gargalos de Encadeamento

Utilize Thread View (Visualização de Encadeamento) como a visualização principal para detectar gargalos de encadeamento. Ela exibe um registro da atividade de cada um dos encadeamentos no programa e o ajuda a identificar contenções e conflitos de encadeamentos.

Pré-requisito:Coletando Dados de Encadeamento

Uma contenção ocorre quando um encadeamento está aguardando um recurso que não está prontamente disponível; isso torna lenta a execução do seu código, mas pode melhorar ao longo do tempo.

Um conflito ocorre quando um encadeamento está aguardando por um recurso que um segundo encadeamento bloqueou e o segundo encadeamento está aguardando por um recurso que o primeiro encadeamento bloqueou. Mais de dois encadeamentos podem estar envolvidos em um conflito. Um conflito nunca é resolvido por si mesmo. Ele normalmente causa a interrupção do aplicativo inteiro ou da parte que está experimentando o conflito.

Para localizar contenções e conflitos de encadeamento:

  1. Exiba a Thread View (Visualização de Encadeamento): Clique com o botão direito do mouse no recurso de traçado de perfil Thread Analysis (Análise de Encadeamento) e, em seguida, clique em Open With (Abrir Com) > Thread View (Visualização de Encadeamento).
  2. Na Thread View (Visualização de Encadeamento), procure setas verticais entre os encadeamentos. Uma única seta indica uma contenção de encadeamento em que um encadeamento está aguardando que outro encadeamento libere um bloqueio. Várias setas indicam um conflito onde dois encadeamentos pertencem ao mesmo estado de conflito de encadeamento. Um marcador com formato de losango indica que embora um encadeamento esteja aguardando por um bloqueio, o encadeamento que retém o bloqueio não pode ser determinado.
  3. Pause o cursor sobre um segmento de encadeamento que esteja aguardando por um bloqueio ou sobre um conflito. isso exibe uma Dica de Ferramenta que especifica o nome da trava e identifica o encadeamento que está mantendo a trava.

Aqui está um exemplo de contenção:

Imagem da janela Thread View com uma seta vertical que indica uma contenção

Aqui está um exemplo de conflito:

Imagem da janela Thread View com um par de setas verticais que indicam um conflito

Nota: Se você traçar o perfil de um programa com o tipo de traçado de perfil Execution Time Analysis (Análise do Tempo de Execução), será possível coletar e exibir dados de encadeamento, mas apenas para encadeamentos nos estados Running (Em Execução) e Dead (Inativo). Para exibir gargalos, é necessário incluir o tipo de traçado de perfil Thread Analysis (Análise de Encadeamento) no conjunto de traçado de perfil.

Os tópicos a seguir fornecem instruções para controlar a Thread View (Visualização de Encadeamento):

Tarefas relacionadas
Identificando os Métodos Responsáveis pelos Gargalos de Encadeamento
Referências relacionadas
Visualização de Encadeamento
Feedback
(C) Copyright IBM Corporation 2000, 2005. Todos os Direitos Reservados.