Individuazione perdite di memoria

Prerequisiti:

Una perdita di memoria è un errore nella logica di assegnazione memoria dinamica di un programma che fa sì che il programma non riesca a richiamare la memoria rilasciata. In altre parole, la memoria assegnata ad oggetti non più necessari, non viene ripristinata. Un numero elevato di questo tipo di istanza può provocare una perdita di memoria. Una perdita di memoria, se grave, può portare a una interruzione dell'applicazione a causa di memoria non sufficiente.

Le perdite di memoria vengono causate da oggetti che continuano a conservare riferimenti ad altri oggetti, impedendo alla raccolta dati obsoleti di raccoglierli. Per identificare tali riferimenti è possibile utilizzare la tabella Riferimenti all'oggetto.

Individuazione perdite di memoria in un'applicazione

Per identificare una perdita di memoria in un'applicazione, procedere come segue:

  1. Nella prospettiva Creazione profili e log, selezionare il controllo o l'agente nella vista Controllo di creazione profili. 
  2. Fare clic con il tasto destro del mouse sul controllo o l'agente e selezionare Raccogli i riferimenti all'oggetto. I riferimenti all'oggetto verranno raccolti.
  3. Fare nuovamente clic con il tasto destro del mouse e selezionare Apri con > Riferimenti all'oggetto.  Viene aperta la tabella Riferimenti all'oggetto.
  4. Selezionare l'icona del menu locale  pulsante con icona triangolare e selezionare Mostra riferimento to.
  5. Osservare l'elenco di oggetti e il numero di riferimenti ad essi. Gli oggetti che dispongono di riferimenti rappresentano un problema potenziale di perdita di memoria. 

Individuazione perdite di memoria in una operazione orientata ad una transazione

Questa procedura consente di identificare quelle fasi nel programma durante le quali vengono creati nuovi oggetti, ma non vengono rilasciati, impedendo così che vengano rimossi durante la raccolta dati obsoleti. Ad esempio, il programma crea una finestra, ma gli oggetti relativi alla finestra continuano ad essere mantenuti anche dopo la chiusura della finestra.  Per identificare una perdita di memoria in un'operazione orientata a una transazione, procedere come segue:

  1. Nella prospettiva Creazione profili e log, selezionare il controllo o l'agente nella vista Controllo di creazione profili. 
  2. Raccogliere i riferimenti all'oggetto prima di eseguire l'operazione in questione. Fare clic con il tasto destro del mouse e selezionare Raccogli i riferimenti all'oggetto. I riferimenti all'oggetto verranno raccolti.
  3. Fare clic con il tasto destro del mouse sul controllo e selezionare Apri con > Riferimento all'oggetto. Esaminare la tabella Riferimenti all'oggetto e notare i riferimenti all'oggetto creati.
  4. Eseguire l'operazione da esaminare.
  5. Raccogliere i riferimenti all'oggetto dopo aver completato l'operazione. Fare clic con il tasto destro del mouse e selezionare Raccogli i riferimenti all'oggetto.
  6. Fare clic con il tasto destro del mouse sul controllo e selezionare Apri con > Riferimento all'oggetto. Esaminare la tabella Riferimenti all'oggetto e notare i riferimenti all'oggetto creati.
  7. Per esaminare i riferimenti di un determinato oggetto, procedere come segue:
    1. Dal menu a discesa nella tabella Riferimenti all'oggetto, selezionare Mostra riferimento by.
    2. Selezionare la classe oggetto, quindi espandere l'elemento.
    3. Identificare i riferimenti che impediscono di richiamare i nuovi oggetti.

 

Argomenti correlati
Panoramica sullo strumento Creazione profili
Risorse di creazione profili
Tabella Riferimenti all'oggetto

Attività correlate
Creazione del profilo di un'applicazione
Avvio o collegamento di un processo Java