Identificando Fugas de Memória
Pré-requisitos:
Uma fuga de memória é um erro na lógica de alocação do armazenamento dinâmico de um programa que
faz com que deixe de recuperar a memória descartada. Ou seja, os objetos que não são mais
solicitados não são recuperados. Inesperadamente, grandes números de tais instâncias
podem sugerir uma fuga de memória. Uma fuga de memória, se severa, pode levar seu aplicativo
ao colapso em decorrência da fuga de memória.
Fugas de memória são causadas por objetos que continuam contendo referências a outros
objetos, impedindo assim que a coleta de lixo recupere os objetos retidos.
A tabela Referências do Objeto pode ser utilizada para ajudar a identificar tais referências.
Localizando uma Fuga de Memória em um Aplicativo
Para identificar uma fuga de memória em seu aplicativo, siga estas etapas:
- Na perspectiva Profiling and Logging, selecione o monitor ou o agente na visualização Profiling Monitor.
- Clique com o botão direito do mouse no Monitor ou Agente e selecione Coletar Referências do Objeto. Agora, as referências do objeto serão coletadas.
- Clique novamente com o botão direito do mouse e selecione Abrir Com > Referência do Objeto.
A tabela Referências do Objeto é aberta.
- Selecione o ícone do menu local
e selecione
Show Reference To.
- Examine a lista de objetos e o número de referências a eles.
Aqueles que possuem referências são um potencial problema de fuga de memória.
Localizando uma Fuga de Memória em uma Operação Orientada à Transação
Este procedimento pode ajudar a identificar uma fase
em seu programa que crie novos objetos mas não os libera, evitando assim
a sua remoção pela coleta de lixo. Por exemplo, seu programa cria uma janela de diálogo
mas os objetos
relacionados ao diálogo continuam suspensos depois de fechada a janela.
Para identificar uma fuga de memória em uma operação orientada à transação, siga estas etapas:
- Na perspectiva Profiling and Logging, selecione o monitor ou o agente na visualização Profiling Monitor.
- Colete referências do objeto antes da operação em questão.
Clique com o botão direito do mouse e selecione Collect Referências do Objeto. Agora, as referências do objeto serão coletadas.
- Clique com o botão direito do mouse no monitor e selecione Open With > Object Reference.
Examine a tabela Referências do Objeto e observe as referências do objeto que foram criadas.
- Execute a operação que você deseja examinar.
- Colete referências do objeto após a conclusão da operação.
Clique com o botão direito do mouse e selecione Collect Referências do Objeto novamente.
- Clique com o botão direito do mouse no monitor e selecione Open With > Object Reference.
Examine a tabela Referências do Objeto e observe as referências do objeto que foram criadas.
- Para examinar referências específicas do objeto, siga estas etapas:
- No menu drop down da tabela Referências do Objeto, selecione Show Reference By.
- Selecione a classe do objeto e expanda o item.
- Identifique as referências que impedem que novos objetos sejam
recuperados.
Conceitos Relacionados
Visão Geral da Ferramenta de Definição de Perfil
Recursos de Definição de Perfil
Tabela Referências do Objeto
Tarefas relacionadas
Definindo o Perfil de um Aplicativo
Iniciando ou Anexando um Processo Java
(C) Direitos Autorais IBM Corporation 2000, 2006. Todos os Direitos Reservados.