Esercizio 1.3: Analisi di probabili perdite di dati

Prima di iniziare, è necessario aver completato l'Esercizio 1.2 Cattura di dump di heap.

In questo esercizio, inizialmente verrà creato un elenco di oggetti (ad esempio, matrici, vettori e sessioni) che sembrano perdere dati. Questi risultano essere le "probabili perdite di dati". Verrà quindi analizzato l'elenco al fine di individuare eventuali perdite di dati.

Creazione di un elenco di probabili perdite di dati

Per creare l'elenco:

  1. Seguendo le istruzioni presenti nella vista Probabili perdite di dati, fare clic sul pulsante della barra degli strumenti Analisi perdita di dati . Viene visualizzata la finestra di dialogo Seleziona le opzioni perdita di dati.
  2. Nella finestra di dialogo, accertarsi che le caselle di controllo relative ai due dump di heap siano selezionate.
    Nota: il valore predefinito impostato per Soglia è 20. Ciò significa che vengono visualizzate solo le probabili perdite di dati con valore Probabilità uguale a 20 o superiore (di seguito in questo esercizio, verranno fornite ulteriori informazioni sui valori relativi a Probabilità).
  3. Fare clic su OK per creare l'elenco. L'indicatore presente nell'angolo in basso a destra della piattaforma Software Development contiene l'indicazione che è in atto la ricerca di probabili perdite di dati.

Panoramica della vista Probabili perdite di dati

Una volta terminato il processo, nella vista Probabili perdite di dati viene visualizzato un elenco di probabili perdite di dati.

Ciascun candidato ha un valore di probabilità compreso tra 100 e 1, dove l'elemento con la più probabile perdita di dati ha come valore 100. Gli altri elementi con probabili perdite di dati, sono classificati conseguentemente e vengono visualizzati in ordine di probabilità decrescente (l'algoritmo per il confronto di heap calcola i valori di probabilità in base alla portata della perdita di dati e all'incremento che si verifica durante l'intervallo tra due dump di heap).

Il valore Soglia impostato per l'esecuzione della presente creazione di profili era 20; non verranno visualizzate le probabili perdite di dati con un valore Probabilità pari a 19 o inferiore.

La vista fornisce per ogni probabile perdita di dati quanto riportato di seguito:

Analisi ed individuazione della perdita di dati

Per individuare la perdita di dati:

  1. Nella vista Probabili perdite di dati, osservare i dati relativi alle probabili perdite di dati la cui probabilità è pari a 100:
  2. Fare doppio clic sulla probabile perdita di dati. Viene visualizzata la vista Grafico riferimento oggetto che contiene dati in formato grafico relativi alla probabile perdita di dati (tenere presente che la visualizzazione del dump di heap potrebbe richiedere del tempo).
  3. Esaminare il grafico riferimento oggetto. Osservare i seguenti punti:
  4. Posizionare il cursore sul percorso che collega la matrice Object e String e leggere la descrizione comandi visualizzata: questa mostra un "Conteggio" uguale al numero di perdite di dati contenuto nella vista Probabili perdite di dati, cosicché questa rappresenta la raccolta di stringhe che sono state individuate come perdite di dati.
  5. Osservare che Secondary e Tertiary Queues conservano riferimenti alla matrice Oggetto, ma Tertiary Queue non è indicata nella vista Probabili perdite di dati come probabile perdita. Le possibili spiegazioni sono:
  6. Nel grafico riferimento oggetto, fare doppio clic sull'oggetto String. Viene visualizzata la vista Dettagli oggetto. In essa sono contenuti tutti i dettagli relativi all'oggetto String, compresi gli oggetti che vi fanno riferimento e tutti gli oggetti a cui questo di volta in volta fa riferimento. Tenere presente che nella vista Dettagli oggetto è possibile spostarsi verso l'alto sugli oggetti referenti facendo clic su uno di essi oppure verso il basso sui referenziati (ovvero oggetti a cui l'oggetto fa riferimento) facendo clic su uno di essi.

Risultati ottenuti: A questo punto si è a conoscenza del fatto che Secondary Queue corrisponde all'oggetto con perdita di dati e che la causa è dovuta al fatto che l'oggetto Vector contiene riferimenti a molti oggetti String.

A questo punto, si è pronti per iniziare l'Esercizio 1.4: Risoluzione delle perdite di dati di memoria.

Terminologia | Feedback
(C) Copyright IBM Corporation 2000, 2005. Tutti i diritti riservati.