Identification des fuites de mémoire
Conditions requises :
Une fuite de mémoire est une erreur dans la logique d'allocation de mémoire dynamique d'un programme qui est la cause de l'échec de récupération de la mémoire supprimée. En d'autres termes, les objets qui ne sont plus requis ne sont pas récupérés. De grands nombres d'instances de ce type risquent de dénoter inopinément une fuite de mémoire. Une fuite de mémoire, si elle est importante, peut donner lieu à l'échec de votre application en raison d'une insuffisance de mémoire.
Les fuites de mémoire sont occasionnées par les objets qui continuent de conserver des
références à d'autres objets, empêchant ainsi la fonction de récupération de place de
récupérer les objets conservés.Le tableau Références d'objets permet d'identifier ces références.
Recherche d'une fuite de mémoire dans une application
Pour identifier une fuite de mémoire dans votre application, procédez comme suit :
- Dans la perspective Profilage et journalisation, sélectionnez le moniteur ou l'agent dans la vue Moniteur de profilage.
- Cliquez avec le bouton droit de la souris sur le moniteur ou l'agent et sélectionnez Collecter les références
d'objets. Les références d'objets sont collectées.
- Cliquez de nouveau avec le bouton droit de la souris, et sélectionnez Ouvrir
avec> Référence d'objet.Le tableau Références d'objets s'affiche.
- Sélectionnez l'icône du menu local
et sélectionnez Afficher la référence à.
- Consultez la liste des objets et le nombre de références à ces objets.Ceux qui possèdent des références constituent un incident de fuite de mémoire potentiel.
Recherche d'une fuite de mémoire lors d'une opération orientée transactions
Cette procédure peut vous aider à identifier une phase dans votre programme, qui crée des objets mais qui ne les libère pas, les empêchant ainsi d'être supprimés via la récupération de place.
Par exemple, le programme crée une fenêtre de dialogue, mais les objets associés à ce dialogue sont conservés après la fermeture de la fenêtre.Pour identifier une fuite de mémoire dans une opération orientée transaction,
procédez comme suit :
- Dans la perspective Profilage et journalisation, sélectionnez le moniteur ou l'agent dans la vue Moniteur de profilage.
- Collectez des Références d'objets avant l'opération en question.
Cliquez dessus
à l'aide du bouton droit de la souris et sélectionnez Collecter les références
d'objets. Les références d'objets sont collectées.
- Cliquez sur le moniteur à l'aide du bouton droit de la souris et sélectionnez
Ouvrir avec > Référence d'objet. Examinez le tableau Références
d'objets et relevez les références d'objets créées.
- Exécutez l'opération à examiner.
- Collectez les Références d'objets une fois l'opération terminée.
Cliquez dessus à
l'aide du bouton droit de la souris et sélectionnez de nouveau Collecter les références
d'objets.
- Cliquez sur le moniteur à l'aide du bouton droit de la souris et sélectionnez
Ouvrir avec > Référence d'objet.
Examinez le tableau Références
d'objets et relevez les références d'objets créées.
- Pour examiner les références d'un objet donné, procédez comme suit :
- Dans le menu déroulant du tableau Références d'objets, sélectionnez Afficher la référence par.
- Sélectionnez la classe d'objets, puis développez l'élément.
- Identifiez les références qui empêchent la récupération des nouveaux objets.
Concepts connexes
Présentation de l'outil de profilage
Ressources de profilage
Table de références d'objets
Tâches connexes
Profilage d'une application
Lancement ou association d'un processus Java
(C) Copyright IBM Corporation 2000, 2006. Tous droits réservés.