Qu'est-ce qu'une fuite de poignée?
Une fuite de descripteur est un type de fuite de ressource, une situation dans laquelle une ressource informatique finie telle qu'une mémoire est consommée de manière excessive par une application. Les fuites de descripteur se produisent lorsqu'une application ouvre un "descripteur", un type spécial de référence à une ressource système, et ne parvient pas à fermer ce descripteur lorsqu'il n'est plus nécessaire. Ils peuvent potentiellement réduire les performances, provoquer des pannes d’application ou du système, et peuvent être le symptôme de bugs majeurs ou d’un codage bâclé dans un logiciel. De nombreux outils de dépannage sont à la disposition des programmeurs pour les aider à lutter contre les fuites.
En programmation informatique, un descripteur est une structure qui fait référence à une ressource système, telle qu'un bloc de mémoire ou un fichier sur un disque. Les descripteurs fournissent une couche d’abstraction entre les ressources système et les applications et sont généralement gérés par le système d’exploitation d’un ordinateur via une "table de descripteurs" qui correspond à chaque descripteur avec une ressource. Un programmeur peut utiliser une poignée pour faire référence à une fenêtre qui est ensuite dessinée à l'écran par le système d'exploitation.
Une application bien comportée publiera les descripteurs dont elle n’aura plus besoin, libérant ainsi des ressources et garantissant que le système d’exploitation ne gérera pas une ressource inutilisée. Les erreurs de programmation, les bogues logiciels et les incompatibilités entre logiciels peuvent empêcher les programmes de conserver les descripteurs dont ils n'ont plus besoin. Au fur et à mesure de l'exécution de l'application, celle-ci peut accumuler un grand nombre de descripteurs inutiles. Ceci est connu comme une fuite de poignée.
Le traitement des fuites, à l'instar d'autres types de fuites de ressources, peut entraîner des performances médiocres, une instabilité du système ou, dans des cas extrêmes, une panne d'ordinateur. En effet, les handles consomment des ressources finies comme la mémoire système, et si une application génère un nombre excessif de handles sans les fermer, ces ressources s'épuisent. Le seuil exact auquel une fuite de poignée commence à poser des problèmes dépend du système d'exploitation de l'ordinateur, de la quantité de mémoire disponible et d'autres facteurs. Une fuite dans laquelle quelques dizaines de poignées sont laissées ouvertes ne sera probablement pas remarquée par les utilisateurs, tandis qu'une fuite de poignée de dix mille ou plus est le signe d'un grave problème dans le code de l'application.
Les programmeurs doivent porter une attention particulière au traitement des fuites, car ils risquent de poser des problèmes. La méthode la plus élémentaire de diagnostic d’une fuite de descripteur consiste à observer le nombre de descripteurs, qui correspond au nombre de descripteurs actuellement ouverts par un processus ou une application au cours de l’exécution de l’application. Le gestionnaire de tâches Windows® peut afficher ces informations. Des utilitaires tiers pour Windows® et d'autres systèmes d'exploitation peuvent également être utiles pour identifier et localiser les descripteurs présentant des fuites.