Quand un programme d' ordinateur a besoin pour stocker des informations , il faut d'abord allouer de la mémoire . Après que les données ne sont plus nécessaires , le programme libère la mémoire pour qu'un autre programme ne peut en faire usage . Si un programme alloue de la mémoire sans désaffecter la mémoire par la suite , ce programme deviendra un drain sur les ressources système . Ces bugs sont appelés « fuites de mémoire » et se débarrasser d'eux est une partie importante de débogage. Processus
Peu importe la langue le programme est écrit dans le processus de base pour détecter les fuites de mémoire est le même. Tout d'abord, la perte de mémoire doit être détectée . Une fuite de mémoire est généralement indiquée en augmentant linéairement utilisation de la mémoire , même si certains outils spécialisés peuvent vous dire directement la quantité de mémoire que le programme a alloué ou libérée. Une fois une fuite de mémoire est détecté, il doit être isolé . Cela se fait par l'essai de chaque fonction ou un objet séparément pour déterminer si la fuite est en cours. Ensuite, le programmeur doit comprendre l'erreur spécifique qui est à l'origine de la fuite et la corriger.
C /C + +
programmes écrits en C et C + + sont connus pour avoir la mémoire fuites , car l'utilisateur doit allouer manuellement et libérer la mémoire en utilisant la commande malloc . L'outil de ccmalloc surveille la fonction malloc et les rapports que la mémoire n'a pas été désaffectée , a été désaffectée plusieurs fois ou même attribué sans avoir été désaffectées en premier lieu . D'autres programmes plus spécialisés tels que NJAMD ( " Not Just Another Debugger Malloc " ) existent aussi pour trouver des fuites de mémoire en C et C + +.
MSDN
Développeurs en utilisant l'environnement de développement de Microsoft peut utiliser la commande ml pour trouver des fuites de mémoire . Taper ml à l'invite CESH fera apparaître une liste de chaque application en cours d'exécution et la quantité de mémoire qui est utilisé , écrit que « r /w = " suivi par le nombre de pages que l'application a alloué . Augmentations inattendues de l'utilisation de mémoire indiquer que l' application dispose d'une fuite de mémoire.
Java
nombreux programmeurs penser que les programmes Java sont à l'abri des fuites de mémoire parce que le programmeur n'est pas responsable d'allocation et de désallocation mémoire , mais ils ne recadrer toujours en place . Machine virtuelle Java, l'environnement qui met en œuvre des programmes Java , a un garbage collector automatique qui libère la mémoire quand il n'est plus référencé par d'autres classes . Des fuites de mémoire peuvent survenir lorsque la mémoire est référencé quand il n'est plus nécessaire , l'amenant à être ignorée par le garbage collector. JProbe est un débogueur qui peuvent prendre des instantanés de l'utilisation de la mémoire en tant que pistes d'applications Java , aider les programmeurs à trouver la source d'une fuite de mémoire .