Prima di iniziare, è necessario completare l'Esercizio 1.3: Probabili perdite di dati.
A questo punto si è appreso che la coda secondaria è la coda con la perdita di dati. Controllare il codice di origine per individuare il problema.
Per aprire l'origine per la coda secondaria e risolvere la perdita di dati di memoria:
public class SecondaryQueue { private Vector myQ; private int currentPos; public SecondaryQueue(){ myQ = new Vector(); currentPos=0; } public void add(Object obj){ myQ.add(obj); } public Object getNext(){ // First In First Out. // Get an object exactly once, // currentPos keeps track of last item removed. if(myQ.size()>currentPos){ currentPos++; return myQ.get(currentPos-1); } } }
public class SecondaryQueue { private Vector myQ; private int currentPos; public SecondaryQueue(){ myQ = new Vector(); currentPos=0; } public void add(Object obj){ myQ.add(obj); } public Object getNext(){ if(myQ.size()>0){ return myQ.remove(0); } return null; } }
Nel menu principale, selezionare File > Salva per salvare le modifiche.
Ora, creare nuovamente il profilo dell'applicazione, catturando i dump di heap come in precedenza. Quando si analizzano le perdite di dati di memoria, la vista Probabili perdite di dati indicherà che "L'analisi di perdita di dati non è risultata in nessuna probabile perdita di dati". La perdita di dati è stata risolta nella coda secondaria e l'algoritmo Probabili perdite di memoria non ha trovato ulteriori perdite di memoria.
Terminare questa esercitazione esaminando il materiale nel Sommario.