Exercice 1.3 : Analyse des candidats de fuite

Avant de commencer, vous devez terminer l'Exercice 1.2 : Capture des vidages de tas.

Dans cet exercice, vous allez d'abord générer une liste des objets (matrices, vecteurs et sessions par exemple) qui semblent présenter des fuites. Il s'agit des "candidats de fuite". Vous analyserez ensuite cette liste pour identifier les fuites.

Génération d'une liste de candidats de fuite

Pour générer la liste :

  1. D'après les instructions de la vue Candidats de fuite, cliquez sur le bouton de la barre d'outils Analyser des fuites . La boîte de dialogue Sélectionner les options d'analyse de fuite s'ouvre.
  2. Dans la boîte de dialogue, vérifiez que les cases correspondant aux deux vidages de tas sont cochées.
    Remarque : la valeur du seuil est définie par défaut sur 20. Cela signifie que seuls les candidats de fuite dont la valeur de probabilité est supérieure ou égale à 20 sont affichés. (Pour en savoir plus sur les valeurs de probabilité, lisez les sections suivantes de cet exercice.)
  3. Cliquez sur OK pour générer la liste. L'indicateur situé en bas à droite de la vue Software Development Platform signale qu'il a détecté des candidats de fuite.

Généralités sur la vue Candidats de fuite

Une fois le processus terminé, une liste de candidats de fuite s'affiche dans la vue correspondante.

Chaque candidat possède une valeur de probabilité comprise entre 1 et 100, le candidat le plus probable ayant une valeur de 100. Les autres candidats sont classés en conséquence, dans l'ordre décroissant de probabilité. (L'algorithme de comparaison des tas calcule les valeurs de probabilité en fonction de la taille de la fuite et de son évolution pendant l'intervalle entre les deux vidages de tas.)

La valeur de seuil a été définie sur 20 pour cette exécution de profilage ; les candidats dont la valeur de probabilité est inférieure ou égale à 19 ne seront pas affichés.

La vue fournit les données suivantes sur chaque candidat de fuite :

Analyse et identification de la fuite

Pour identifier la fuite :

  1. Dans la vue Candidats de fuite, analysez les données du candidat de fuite dont la probabilité est égale à 100 :
  2. Cliquez deux fois sur le candidat de fuite. La vue Graphique de références objet s'ouvre et affiche les données graphiques du candidat de fuite. (Notez que le délai d'affichage du vidage de tas peut prendre un certain temps.)
  3. Examinez le graphique de références de l'objet. Notez les points suivants :
  4. Placez votre curseur sur le chemin qui relie la matrice Object à l'objet String, puis lisez l'infobulle qui s'affiche : elle indique un "Nombre" égal au nombre de fuites indiqué dans la vue Candidats de fuite ; c'est donc cet ensemble de chaînes qui a été identifié comme fuite.
  5. Notez que les files d'attente secondaire et tertiaire contiennent chacune des références à la matrice Object mais que la file d'attente tertiaire n'est pas identifiée comme présentant une fuite dans la vue Candidats de fuite. Il existe plusieurs explications :
  6. Dans le graphique de références objet, cliquez deux fois sur l'objet String. La vue Détails sur l'objet s'ouvre. Elle affiche toutes les données concernant l'objet String, y compris tous les objets qui s'y rapportent et tous ceux auxquels il fait lui-même référence. Notez que dans la vue Détails sur l'objet, vous pouvez remonter jusqu'aux référenceurs ou descendre jusqu'aux référencés (objets auxquels la chaîne se rapporte) en cliquant sur l'un d'entre eux.

Quelles sont vos conclusions ? Vous devez maintenant savoir que l'objet qui présente des fuites est la file d'attente secondaire et que ces fuites sont dues à un objet Vector qui conserve des références à plusieurs objets String.

Vous êtes maintenant prêt à aborder l'Exercice 1.4 : Correction de la fuite de mémoire.

Conditions d'utilisation | Appréciations en retour
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.