Strictement parlant, une fuite de mémoire est la consommation de la mémoire qui est "n'est plus utilisé" par le programme.
"Les plus utilisés" a plus d'un sens, on pourrait dire "pas plus de référence", qui est, totalement irrécupérable, ou cela pourrait signifier, référencé, récupérable, non utilisé, mais le programme conserve les références de toute façon. Seule la, plus tard, s'applique .Net pour parfaitement objets gérés. Cependant, pas toutes les classes sont parfait et à un moment donné, un sous-jacents non géré la mise en œuvre pourrait fuite ressources de façon permanente pour ce processus.
Dans tous les cas, l'application consomme plus de mémoire que ce qui est strictement nécessaire. Les côtés effets, en fonction de la quantité de fuite, peut aller de l'absence, de ralentissement causé par l'excès de la collection, à une série de mémoire exceptions et enfin une fatale erreur, suivi par la forcé l'arrêt du processus.
Vous savez qu'une application a un problème de mémoire lors de la surveillance montre que de plus en plus la mémoire est allouée à votre processus après chaque cycle de nettoyage de mémoire. Dans de tels cas, vous êtes soit de garder trop de mémoire, ou de certains sous-jacente non géré la mise en œuvre est en fuite.
Pour la plupart des fuites, les ressources sont récupérées lorsque le processus est terminé, cependant, certaines ressources ne sont pas toujours récupérés dans certains cas précis, GDI curseur poignées sont connus pour cela. Bien sûr, si vous avez un mécanisme de communication interprocessus, la mémoire allouée dans les autres processus ne serait pas libéré jusqu'à ce que le processus libère ou se termine.