Identificar falhas de memória

Pré-requisitos:

Uma falha de memória é um erro numa lógica de atribuição de armazenamento dinâmico do programa que faz com que não consiga reclamar a memória rejeitada. Isto é, os objectos que já não são necessários não são reclamados. Quantidades inesperadamente grandes destas ocorrências podem sugerir uma falha de memória. Uma falha de memória, se for grave, pode conduzir ao colapso da aplicação devido a esta ficar sem memória.

As falhas de memória são causadas por objectos que continuam a manter referências com outros objectos, impedindo assim a recolha de lixo de reclamar os objectos capturados.  A tabela Referências de Objectos pode ser utilizada para ajudar na identificação dessas referências.

Localizar uma falha de memória numa aplicação

Para identificar uma falha de memória na aplicação, siga estes passos:

  1. Na perspectiva Perfilar e Registar, seleccionar o supervisor ou o agente na vista Supervisor de Perfilamento.  
  2. Fazer clique com o botão direito do rato no Supervisor ou Agente e seleccionar Recolher Referências de Objectos. As referências de objectos serão agora recolhidas.
  3. Fazer novamente clique com o botão direito do rato e seleccionar Abrir Com > Referência de Objecto. Irá abrir-se a tabela Referências de Objectos.
  4. Seleccionar o ícone menu local um botão com ícone de triângulo e seleccionar Mostrar Referência A.
  5. Examinar a lista de objectos e o número de referências aos mesmos.  Os que tiverem referências são um potencial problema de falha de memória.  

Localizar uma falha de memória numa operação orientada para a transacção

Este procedimento pode ajudar a identificar uma fase no programa que cria novos objectos, mas não os liberta, impedindo assim a sua remoção através da recolha de lixo. Por exemplo, o programa cria uma janela de caixa de diálogo, mas os objectos relacionados com a caixa de diálogo continuam a ser retidos após a janela ter sido fechada.  Para identificar uma falha de memória numa operação orientada para a transacção, siga estes passos:

  1. Na perspectiva Perfilar e Registar, seleccionar o supervisor ou o agente na vista Supervisor de Perfilamento.  
  2. Recolher as referências de objectos antes da operação em questão. Fazer clique com o botão direito e seleccionar Recolher Referências de Objectos. As referências de objectos serão agora recolhidas.
  3. Fazer clique com o botão direito no supervisor e seleccionar Abrir com > Referência de Objecto. Examinar a tabela Referências de Objectos e ver as referências de objectos que foram criadas.
  4. Executar a operação que pretende examinar.
  5. Recolher as referências de objectos após a operação terminar. Fazer clique com o botão direito do rato e seleccionar novamente Recolher Referências de Objectos.
  6. Fazer clique com o botão direito no supervisor e seleccionar Abrir com > Referência de Objecto. Examinar a tabela Referências de Objectos e ver as referências de objectos que foram criadas.
  7. Para examinar as referências de um objecto específico, siga estes passos:
    1. No menu pendente na tabela Referências de Objectos, seleccionar Mostrar Referência Por.
    2. Seleccionar a classe do objecto, em seguida, expandir o artigo.
    3. Identificar as referências que impedem que os novos objectos sejam reclamados.

 

Conceitos relacionados
Descrição geral da Ferramenta de Perfilamento
Perfilar recursos
Tabela Referências de Objectos

Tarefas relacionadas
Perfilar uma aplicação
Lançar ou anexar um processo Java