Avant de commencer, vous devez terminer l'Exercice 1.3 : Analyse des candidats de fuite.
Vous savez maintenant que la file d'attente secondaire est celle qui présente des fuites. Examinez le code source pour identifier l'origine de l'incident.
Pour ouvrir la source de la file d'attente secondaire et corriger la fuite de mémoire :
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; } }
Dans le menu principal, sélectionnez Fichier > Sauvegarder pour enregistrer vos modifications.
Ensuite, profilez à nouveau l'application en capturant les vidages de tas comme indiqué précédemment. Lorsque vous recherchez les fuites, la vue Candidats de fuite indique que "L'analyse de fuite n'a trouvé aucun candidat de fuite." Vous avez corrigé la fuite de la file d'attente secondaire et l'algorithme de détection de fuite n'a détecté aucune autre fuite.
Terminez ce tutoriel en passant en revue les objectifs de formation, dans la section Résumé.