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.
Os procedimentos gerais consistem no seguinte:
- Defina o perfil do aplicativo. Colete referências de objeto antes da operação
em questão e exiba a tabela Object References. Utilize o procedimento descrito em
Identifying Memory Leaks.
- Execute a operação, colete novamente as referências do objeto e exiba a tabela
para ver quais referências foram criadas.
- Encerre a operação, colete as referências do objeto e exiba a tabela
para ver quais referências permanecem nos objetos criados.
- Para criar um dump das referências do objeto, utilize o botão Collect Object
References
.
Os objetos que existiam logo antes do dump são os objetos antigos.
- Em seguida, crie um dump de objetos e referências logo após o término da
operação. Os objetos que foram criados e não puderam ser coletados no intervalo
entre dois dumps de referências serão identificados como novos objetos na tabela Object References.
- Abra a exibição Profiling Monitor.
- Selecione o agente.
- Clique com o botão direito do mouse e então selecione Open With > Object References.
A tabela Object References é aberta.
Para identificar referências de um objeto:
- Abra a tabela Object References.
- Assegure-se de que opção Show Reference By tenha sido selecionada.
- 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 Perfis
Recursos de Definição de Perfil
Tabela Object References
Tarefas Relacionadas
Identificando Fugas de Memória
Definindo o Perfil de um Aplicativo
Iniciando ou Anexando um Processo Java
Analisando Desempenho e Uso de Memória - Visão Geral
(C) Copyright IBM Corporation 2000, 2003. Todos os Direitos Reservados.