Tutorial: Analisando os Dados de Definição de Perfil de um Processo Java

Objetivos

Analisar os dados coletados da definição de perfil de um processo Java, utilizando as exibições Profiling and Logging da perspectiva Profiling and Logging das seguintes maneiras:

Tempo Necessário

1 hora

Antes de Iniciar

Antes de iniciar este tutorial, você precisa:

  1. Instalar a Plataforma Eclipse, incluindo as ferramentas Hyades.
  2. Possuir os arquivos de definição de perfil de amostra prontos para importação.  Eles devem estar em:
    install directory\directory\eclipse\plugins\org.eclipse.hyades.collection.framework\src\org\eclipse\hyades\test\collection\framework

Descrição

Neste tutorial, você utilizará as diferentes exibições Profiling and Logging para analisar a PerformanceExample.class de amostra. A amostra abre um quadro contendo dois botões.

Você concluirá as seguintes tarefas:

  1. Abertura da Perspectiva Profiling and Logging no Workbench
  2. Definição de Perfil da Classe PerformanceExample
  3. Análise das Informações sobre a Definição de Perfil

Para atualizar as exibições enquanto o aplicativo está sendo monitorado, clique no botão Refresh Views  um botão com ícone estilizado .

Abrindo a Perspectiva Profiling and Logging no Workbench

Clique em Open a Perspective  um botão com ícone estilizado > Other > Profiling and Logging

Definição de Perfil da Classe PerformanceExample

Execute as seguintes etapas:

  1. Clique em Profile   um botão com ícone estilizado. O assistente Launch Java Process é aberto na página Class.
  2. Selecione: Select a class on the file system
  3. Clique em Browse e então localize a classe de amostra, que deve estar em:
    install directory\eclipse\plugins\org.eclipse.hyades.collection.framework\bin\org\eclipse\hyades\test\collection\framework
    Clique em Avançar. A página Destination é aberta.
  4. ProfileProject e DefaultMonitor são os recursos de definição de perfil padrão e podem ser utilizados para armazenar dados a partir desta sessão de definição de perfil.  Clique em Next. A página Profiling Filters é aberta.
  5. Aceite os filtros padrão. Clique em Avançar. A página Profiling Options é aberta.
  6. A caixa de opções para My application uses too much memory já está selecionada, o que significa que as informações relacionadas à memória serão incluídas nos dados de definição de perfil que são coletados a partir do aplicativo
  7. Para receber as informações sobre execução, selecione My application is too slow. Com esta opção selecionada você pode utilizar as exibições estatísticas para analisar as informações relacionadas ao tempo.  Você precisa coletar os detalhes do gráfico de execução para poder utilizar as exibições Execution Flow e Method Invocation.  Como o objetivo desta amostra é guiá-lo através de todas as exibições de definição de perfil, incluindo as exibições Execution Flow e Method Invocation, clique em Show Details e então selecione Show execution flow graphical details Clique em Finish.
  8. Os recursos de definição de perfil requeridos são criados e o agente e o processo aparecem na exibição Profiling Monitor. 
  9. Ative a exibição de Folders, Monitors e Hosts e você visualizará o monitor que agrupa seus dados bem como a máquina na qual você está executando o workbench.

    Profiling Monitor mostrando a hierarquia dos recursos e o menu drop-down para a verificação dos recursos para torná-los visíveis

     

Análise das Informações sobre a Definição de Perfil

Exibir o Comportamento da Execução em um Período de Tempo

  1. Abra a exibição Execution Flow: selecione seu monitor, clique com o botão direito do mouse e então selecione Open With > Execution Flow
  2. A execução de todo o programa está representada nesta exibição.   Ela mostra o tempo no eixo vertical, do lado direito.
  3. Clique no nome do método (ou no espaço em branco abaixo dele) para selecioná-lo. Todos os seus métodos chamados, são então realçados em amarelo.   O comprimento vertical da área realçada é uma indicação do tempo base para o método. O valor exato do tempo base é exibido na linha de status.

     Exibição Execution Flow com dois métodos, um à esquerda com algum sombreado amarelo
     
  4. Utilize a ferramenta Zoom In   um botão com ícone estilizado para ativar o cursor e então aponte e clique para aumentar uma área. 

    close da ilustração de Execution Flow
     

Analisando seu Processo Utilizando a Exibição Execution Flow

Abrindo a Exibição Execution Flow

  1. Na exibição Profiling Monitor, selecione o monitor ou o agente.
  2. Dê um clique com o botão direito do mouse e selecione Open With > Execution Flow. A exibição Execution Flow é aberta.

Nota: Para atualizar as exibições enquanto o aplicativo está sendo monitorado, clique no botão Refresh Views  um botão com ícone estilizado .

Identificando Encadeamentos Ativos

Na exibição Execution Flow, cada encadeamento contém períodos de atividades, que são identificados por uma grande quantidade de chamadas de métodos. Em uma representação simbólica, o primeiro método chamado é uma faixa e os métodos que ele chama subseqüentemente aparecem como outras faixas à sua direita. A seqüência das chamadas de métodos avança da esquerda para direita; as partes ativas do encadeamento são identificadas por essa progressão da esquerda para direita.

Quando você seleciona a seção inteira contornando a seqüência de chamadas de métodos, o tempo base que é gasto executando esta seqüência é exibido na linha de status. Para consultar o tempo base para o qual o encadeamento está ativo, localize a diferença entre os seguintes tempos: 

  1. Aponte para a parte superior da linha horizontal da área amarela selecionada para visualizar o tempo base correspondente na linha de status.
  2. Da mesma forma, aponte para a borda inferior da área amarela selecionada, (que cobre o período de execução quando a seqüência do método está em ação) e visualize o tempo base neste ponto.

Dicas

Identificando Métodos Chamados Freqüentemente

Para identificar métodos chamados freqüentemente:

  1. Utilize a ferramenta Zoom  um botão com ícone estilizado para aumentar a seqüência de chamadas do método.
  2. Procure por faixas da mesma cor dentro da área selecionada. Estas faixas identificam métodos da mesma instância de classe que foram chamados várias vezes.
  3. Verifique o comprimento das faixas de cores diferentes (cada uma representando um método). Quanto mais longa for a faixa mais longo é o tempo de execução deste método. 

    Imagem da exibição Method Invocation

Medindo a Coleta de Lixo

Normalmente, é impossível dizer que ocorreu a coleta de lixo para um objeto inspecionando as faixas em um encadeamento de usuário nesta exibição.

Execute as seguintes etapas:

  1. Verifique a coluna mais à esquerda nesta exibição. Esta coluna é reservada para o encadeamento da coleta de lixo e é denominada a coluna de encadeamento GC.
  2. Verifique se há um único e estreito retângulo na coluna de encadeamento GC. O retângulo provavelmente estará localizado bem abaixo do método mais chamado no objeto. Este retângulo aparece na coluna de encadeamento GC sempre que ocorreu uma coleta de lixo para um objeto.

Identificando Fases da Execução do Programa

Identificando a Fase de Inicialização

  1. Utilize a ferramenta Zoom In a button with stylized icon para aumentar a seqüência de chamadas de método na parte superior do encadeamento principal.
  2. Observe os métodos que estão marcados como -init-
  3. Clique para selecionar um destes métodos. A barra de status é atualizada para indicar que o método ajuda na inicialização (atribuição de valores para variáveis utilizadas no aplicativo).

Analisando Métodos Utilizando a Exibição Method Invocation

  1. Em Profiling Monitor, selecione um monitor ou um agente. Dê um clique com o botão direito do mouse e selecione Open With > Execution Flow.  A exibição Execution Flow aparece.
  2. Selecione o método que deseja estudar, clique com o botão direito do mouse e então selecione Show Method Invocation.
  3. Utilize a ferramenta Zoom In  a button with stylized icon para aumentar uma seção da exibição.  As faixas estão codificadas com cores por classe e são conectadas por linhas horizontais que representam chamadas de métodos.
  4. Selecione um método clicando em seu nome. 
  5. Clique no botão Refresh Views  um botão com ícone estilizado para assegurar-se de que esteja exibindo as informações atuais.
  6. Observe a linha:
    linha de status exibindo o nome do método e os números 1/1

    Esta linha exibe o nome do método, seguido de n/m, em que n é a chamada que está sendo exibida atualmente de um total de m chamadas.  
  7. Clique Previous  e Next  para procurar todas as chamadas do método selecionado (ou cada mensagem para o objeto selecionado). A fração na barra de ferramentas altera para indicar qual chamada você está visualizando.

Localizando o Responsável pela Chamada de um Método

Para localizar o que está chamando um método, siga estas etapas, continuando na exibição Method Invocation:

  1. Para visualizar o responsável pela chamada de um método, clique no botão Show Caller  . O método é exibido junto com o responsável pela chamada à sua esquerda. 
  2. Para visualizar detalhes adicionais sobre o responsável pela chamada do método de cada nova chamada que exibir, posicione o cursor sobre a tira que representar o responsável pela chamada na exibição. A linha de status exibe as informações sobre o responsável pela chamada.
  3. Para consultar o método que um método selecionado chama, clique no botão Show Called Method