Fuite de mémoire
En informatique, une fuite de mémoire est un bogue expliqué par une occupation croissante et non contrôlée ou non désirée de la taille des données résidentes en mémoire, ce qui entraine la saturation de la mémoire de l’ordinateur.
Présentation
[modifier | modifier le code]Causes
[modifier | modifier le code]Dans un programme qui stocke régulièrement de nouvelles données en mémoire, la cause la plus classique d'un tel bogue est l'absence de désallocation (de libération) de l'espace utilisé lorsque ces objets ne sont plus référencés. Au fur et à mesure du temps (tant que le programme continue de fonctionner), la taille des données résidentes en mémoire augmente donc[1].
Une fuite de mémoire est un problème exclusivement logiciel. Il est totalement indépendant du bon ou du mauvais fonctionnement des composantes de la mémoire.
Conséquences
[modifier | modifier le code]La conséquence d'une fuite est la saturation de la mémoire de la machine. Si la machine dispose d'un système d'exploitation évolué, ce dernier mettra un terme à l'exécution du logiciel lorsque la mémoire disponible sera pleine. Dans le cas contraire, le logiciel s'interrompra de façon anormale et inattendue sans indiquer les causes de son mauvais fonctionnement.
Une fuite de mémoire peut entraîner une utilisation accrue de la mémoire, augmenter les performances d'exécution et avoir un impact négatif sur l'expérience utilisateur[2].
Résolution du problème
[modifier | modifier le code]Il existe de nombreux outils pour détecter ce type d'erreur (pour des logiciels ou librairies programmés avec des langages compilés sans GC (ramasse-miettes) tels que C/C++):
- Valgrind, un logiciel libre pour Linux ;
- CodeSonar, un logiciel professionnel développé par la société américaine GrammaTech, ayant bénéficié de travaux de recherche de la NASA ;
- Purify, un logiciel propriétaire pour Linux et Windows.
Des langages de haut niveau permettent de réduire le risque de fuite de mémoire grâce à la présence d'un ramasse-miettes[3].
Notes et références
[modifier | modifier le code]- (en-US) Kevin Dankwardt, « What is a memory leak? », sur Lynda.com, (consulté le )
- Rudafshani, Masoomeh, and Paul A. S. Ward. “LeakSpot: Detection and Diagnosis of Memory Leaks in JavaScript Applications.” Software, practice & experience 47.1 (2017): 97–123. Web.
- François Dorin, « Plateforme .Net : le ramasse-miettes », sur Developpez.com, (consulté le )