Exercício 1.2: Capturando Dumps de Heap

Antes de começar, você deve concluir o Exercício 1.1: Importando o recurso requerido.

Cenário

Sua organização possui um sistema de enfileiramento de três camadas que faz parte de um aplicativo de proxy da Web. Cada camada do sistema de enfileiramento possui sua própria fila. A equipe de testes determinou que o aplicativo possui uma fuga de memória e suspeita que ela esteja no sistema de enfileiramento. Como o desenvolvedor de uma das fila, você recebeu a tarefa de determinar qual camada é responsável pela fuga de memória.

Visão Geral

Para executar a análise de fuga de memória, é necessário capturar dois dumps de heap do Java.

O heap é um bloco de memória que o JVM (Java Virtual Machine), ao executar, utiliza para armazenar objetos Java. A memória heap do Java é gerenciada por um coletor de lixo, que desaloca automaticamente a memória de objetos Java aos quais não existem referências remanescentes.

Um dump de heap é uma imagem do conteúdo do heap em um momento específico.

São necessários dois dumps de heap para que seja possível ver como o uso da memória se altera entre dois pontos na execução do aplicativo. Um algoritmo interno compara os heaps e identifica os objetos que permanecem na memória quando não deveriam. O algoritmo analisa os seguintes indicadores para identificar fugas potenciais: Objetos que estão na memória por todo o intervalo de tempo entre os dois dumps de heap, um aumento na quantidade de objetos de uma determinada classe no segundo heap e a quantidade de referências a um objeto.

Preparando para Capturar os Dumps de Heap

Para capturar dumps de heap, é necessário alternar para a perspectiva Criação de Perfis e de Logs:

  1. Na barra de menus do Software Development Platform, selecione Janela > Abrir Perspectiva > Outra... A caixa de diálogo Selecionar Perspectiva é aberta.
  2. Na parte inferior esquerda da caixa de diálogo, clique em Mostrar tudo. Aparece uma marca na caixa de opções.
  3. Na lista de perspectivas, selecione Criação de Perfis e de Logs e clique em OK.
  4. Se a caixa de diálogo Confirmar Ativação for aberta, clique em Sempre ativar os recursos e não perguntar novamente e, em seguida, clique em OK.
  5. O Software Development Platform é alternado para a perspectiva Criação de Perfis e de Logs.

Capturando os Dumps de Heap

Para este tutorial, você irá capturar manualmente os dumps de heap. (Alternativamente, você poderia definir intervalos de tempo para capturar automaticamente os dumps de heap ou importar dumps de heap existentes.)

Para capturar os dumps de heap:

  1. Execute o aplicativo:
    1. Na barra de menus, selecione Executar > Perfil... A caixa de diálogo Perfil é aberta.
    2. Na lista Configurações, dê um clique duplo em Aplicativo Java. Uma entrada Nova_configuração aparece na lista.
    3. No campo Nome, digite ThreeTierQueue_MemLkAnalysis.
    4. Na guia Principal, ao lado do campo Projeto, clique em Procurar. A caixa de diálogo Seleção de Projeto é aberta.
    5. Selecione ThreeTierQueue e, em seguida, clique em OK.
    6. Ao lado do campo "Classe principal", clique em Procurar.
    7. Na caixa de diálogo Escolher Tipo Principal, selecione TestThreeTierQueue e, em seguida, clique em OK.
    8. Na caixa de diálogo Perfil, clique na guia Criação de Perfis.
    9. Na subguia Visão Geral, marque a caixa de opções para o conjunto de criação de perfil "Análise de Fuga de Memória - Dumps de heap manuais". (Um conjunto de criação de perfis define o tipo de dados da criação de perfis que devem ser coletados para a execução.)
    10. Clique em Perfil. O aplicativo é executado e a exibição é alterada da seguinte forma:
      • Um recurso de Criação de perfis para o processo aparece no Monitor de Criação de Perfis.
      • A visualização Candidatos à Fuga é aberta e exibe uma mensagem Status Atual com instruções sobre o que fazer em seguida.
        Nota: Se você obtiver uma Mensagem de Segurança informando que o Agent Controller não está disponível, leia Se não for possível coletar dados.
  2. Capture os dumps de heap:
    1. Na barra de menus, selecione Janela > Mostrar Visualização > Console para abrir a visualização Console, para que seja possível seguir o aplicativo em seu processamento.
    2. Deixe o aplicativo "aquecer" por aproximadamente meio minuto, para certificar-se de que todas as classes para as quais deseja criar perfil sejam carregadas e inicializadas.
    3. Siga as instruções na visualização Candidatos à Fuga: Clique no botão da barra de ferramentas Capturar Dump de Heap para capturar o dump de heap de baseline, o ponto de início para a comparação de heap. Agora, recursos de criação de perfis adicionais aparecem na visualização Monitor de Criação de Perfis, um para Detecção Automática de Fuga e um para o dump de heap recém-capturado.
    4. Deixe o aplicativo executar por mais um minuto e, novamente, siga as instruções na visualização Candidatos à Fuga; capture um segundo dump de heap da mesma forma. Um recurso de criação de perfis para o segundo dump de heap aparece no Monitor de Criação de Perfis.
    5. Clique no botão Finalizar na visualização do Console para finalizar o processo.

Se Não For Possível Coletar Dados

Antes de poder coletar qualquer tipo de dados de criação de perfis, o Agent Controller deve estar em execução. Se você obtiver uma mensagem informando que o Agent Controller não está disponível, certifique-se de que ele foi instalado, inicie-o manualmente e tente novamente. Para obter instruções, consulte o guia de instalação. É possível acessar o guia de instalação utilizando a barra de lançamento, ou ainda é possível encontrá-lo no CD do produto em disk1/install.html.

Após coletar os dados, você estará pronto para começar o Exercício 1.3: Analisando candidatos à fuga.

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