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 Object References 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 e selecione Collect Object References. Agora, as referências do objeto serão coletadas.
- Clique com o botão direito do mouse novamente e selecione Open With > Object Reference.
A tabela Object References é 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 Object References. 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 Object References 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 Object References novamente.
- Clique com o botão direito do mouse no monitor e selecione Open With > Object Reference.
Examine a tabela Object References e observe as referências do objeto que foram criadas.
Os objetos que foram criados e não puderem ser coletados no intervalo
entre as duas coletas de referências de objeto serão identificados como novos objetos na tabela Object References.
- Para examinar referências específicas do objeto, siga estas etapas:
- No menu drop down da tabela Object References, 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 Object References
Tarefas Relacionadas
Definindo o Perfil de um Aplicativo
Iniciando ou Anexando um Processo Java
(C) Copyright IBM Corporation 2000, 2004. Todos os Direitos Reservados.