Exercício 1.3: Analisando Candidatos à Fuga

Antes de começar, você deve concluir o Exercício 1.2: Capturando dumps de heap.

Neste exercício, primeiramente você irá gerar uma lista de objetos (como por exemplo matrizes, vetores e sessões) que aparentam estar com fuga. Esses são os "candidatos à fuga". Em seguida, você analisará a lista para identificar quaisquer fugas.

Gerando uma Lista de Candidatos à Fuga

Para gerar a lista:

  1. Seguindo as instruções na visualização Candidatos à Fuga, clique no botão da barra de ferramentas Analisar por Fugas . A caixa de diálogo Selecionar Opções de Análise de Fuga é aberta.
  2. Na caixa de diálogo, certifique-se de que as caixas de opções dos dois dumps de heap estejam marcadas.
    Nota: O valor do Limite é definido por padrão em 20. Isto significa que apenas os candidatos à fuga com um valor de Probabilidade de 20 ou maior são exibidos. (Informações adicionais sobre os valores de Probabilidade são fornecidos posteriormente neste Exercício.)
  3. Clique em OK para gerar a lista. O indicador no canto inferior direito da Software Development Platform relata que está localizando candidatos à fuga.

Uma Visão Geral da Visualização Candidatos à Fuga

Quando o processo for concluído, a visualização Candidatos à Fuga exibirá uma lista dos candidatos à fuga.

Cada candidato possui um valor de probabilidade entre 100 e 1, com o candidato mais provável possuindo o valor de 100. Os outros candidatos são posicionados de acordo e listados em ordem de probabilidade decrescente. (O algoritmo de comparação de heap calcula os valores de probabilidade com base no tamanho da fuga e em seu crescimento durante o intervalo entre os dois dumps de heap.)

O valor de Limite foi definido em 20 para essa execução de criação de perfil; quaisquer candidatos com um valor de Probabilidade 19 ou menor não serão exibidos.

A visualização fornece os seguintes dados para cada candidato à fuga:

Analisando e Identificando a Fuga

Para identificar a fuga:

  1. Na visualização Candidatos à Fuga, olhe os dados do candidato à fuga que possui uma probabilidade 100:
  2. Dê um clique duplo no candidato à fuga. A visualização Gráfico de Referência do Objeto é aberta e exibe dados gráficos para o candidato à fuga. (Note que pode levar algum tempo para preparar o dump de heap para exibição.)
  3. Examine o gráfico de referência do objeto. Note os seguintes pontos:
  4. Pause o cursor sobre o caminho que conecta a matriz Object e String e leia a dica de ferramenta exibida: Ela mostra uma "Contagem" igual ao Número de Fugas exibido na visualização Candidatos à Fuga e, portanto, esta é a coleção de cadeias que foi identificada como a fuga.
  5. Note que tanto as Filas Secundárias quanto Terciárias estão mantendo referências com a matriz Object, mas a Fila Terciária não está identificada na visualização Candidatos à Fuga como contendo uma fuga. Há várias explicações possíveis para isso:
  6. No gráfico de referência do objeto, dê um clique duplo no objeto Cadeia. A visualização Detalhes do Objeto é aberta. Ela exibe todos os detalhes do objeto String, incluindo todos os objetos que fazem referência a ele e todos os objetos aos quais ele, por sua vez, se refere. Note que, na visualização Detalhes do Objeto, é possível navegar até os referenciadores clicando em um deles ou para baixo nos referenciados (objetos aos quais o objeto se refere) clicando em um deles.

O que você descobriu? Agora você sabe que a Fila Secundária é o objeto com fuga e que isso acontece porque um objeto Vector está retendo referências a muitos objetos String.

Agora você está pronto para começar o Exercício 1.4: Corrigindo a fuga de memória.

Termos de uso | Feedback
(C) Copyright IBM Corporation 2000, 2005. Todos os Direitos Reservados.