Wenn ein Computer -Programm zum Speichern von Informationen benötigt wird, muss zuerst Speicher zugewiesen werden. Nach , dass die Daten nicht mehr benötigt wird , freigibt das Programm den Speicher, so dass ein anderes Programm Gebrauch machen können . Wenn ein Programm ordnet Speicher ohne Freigeben des Speichers danach wird das Programm eine Belastung für die Systemressourcen werden . Diese Fehler werden als " Memory Leaks " und das Loswerden von ihnen ist ein wichtiger Teil des Debugging. Prozess
Unabhängig davon, welche Sprache das Programm in schriftlicher, ist das grundlegende Verfahren zum Auffinden Speicherlecks das gleiche. Erstens muss der Speicher Leck erkannt wird. Ein Speicherverlust wird in der Regel durch eine linear zunehmende Speicherauslastung angezeigt , obwohl einige spezielle Tools können Sie direkt zu sagen, wie viel Speicher ein Programm zugewiesen oder freigegeben . Sobald ein Speicherverlust erkannt wird, muss isoliert werden. Dies wird durch eine Prüfung jedes einzelnen Funktion oder ein Objekt separat zu bestimmen, wo das Leck auftritt getan . Dann muss der Programmierer herauszufinden, die spezifischen Fehler die Ursache des Lecks und korrigieren.
C /C + +
Programme in C und C + + sind mit einem Speicher berüchtigten Lecks , da der Benutzer manuell zuweisen müssen und freigeben Speicher mit dem Befehl malloc . Die ccmalloc Tool überwacht die Funktion malloc und berichtet, was Speicher wurde nicht freigegeben , wurde mehrmals freigegeben oder sogar zugeteilt , ohne in den ersten Platz wurde freigegeben . Andere spezialisierte Programme wie NJAMD ( "Not Just Another Malloc Debugger" ) auch für die Suche nach Speicherlecks in C und C + +.
MSDN
Entwickler existieren mit Microsofts Entwicklungsumgebung können die ml Befehl Speicherlecks zu finden. Tippen ml am cesh Eingabeaufforderung öffnet sich eine Liste aller laufenden Anwendung und die Menge an Speicher , die verwendet wird , als " r /w =" durch die Anzahl der Seiten, die Anwendung zugewiesen hat , gefolgt geschrieben. Unerwarteter Anstieg der Speichernutzung zeigen, dass die Anwendung ein Memory Leak hat .
Java
Viele Programmierer denken, dass Java-Programme immun gegen Speicherlecks sind, weil der Programmierer ist nicht verantwortlich zum Zuordnen und Freigeben Speicher , aber sie haben immer noch auftauchen . Virtuelle Java-Maschine , die Umgebung, die Java-Programme implementiert , hat eine automatische Speicherbereinigung , die Speicher freigibt , wenn er nicht mehr von anderen Klassen verwiesen . Speicherlecks auftreten können , wenn der Speicher , auf die verwiesen wird, wenn es nicht mehr benötigt wird , wodurch es zu durch den Garbage Collector übersprungen werden. JProbe ist ein Debugger, der Schnappschüsse von Speicherauslastung als Java-Anwendung läuft kann , hilft Programmierern, die Quelle eines Speicherlecks zu finden.