Eine Reihe von Möglichkeiten zur Verfügung, um festzustellen, ob ein Computerprogramm ist undicht Speicher . Ein Programmierer kann durch den Quellcode zu sichten, um sicherzustellen, dass alle Speicher zugewiesen wurde aufgehoben , so kann er ein Programm, das seine Software-Tests für Speicherlecks zu schreiben , kann er entwickeln eine Speicher-Management System , das ihn zu verfolgen, verwendet Speicher halten können , oder er kann ein Drittanbieter- Programm, das für Speicherlecks Tests verwenden . Was ist ein Memory Leak ?
Ein Speicherverlust wird ein unerwünschtes Speichernutzung durch ein Computerprogramm , wobei das Programm reserviert Speicher für die Nutzung und nicht , um es freizugeben , sobald der Speicher ist nicht mehr in Gebrauch . Dieser Teil des Speichers wird nicht mehr verfügbar sein, um das Computer-Programm . Ein Programm, das Lecks genug Speicher über genügend Zeit kann das System dazu führen , dass ihr die verfügbaren Speicher , die das Programm oder Computer-System zum Scheitern führen können. Speicherlecks kann auch dazu führen, ein System zu verlangsamen, um eine unbefriedigende Geschwindigkeit aufgrund Speicher Prügel . Programme, die für längere Zeit laufen , führen viele Zuteilungen oder Speicherzuweisung in großen Brocken kann besonders anfällig für gefährliche Speicherlecks.
Verwenden Gut Coding Practices
beste Weg, um sicherzustellen, dass Ihr Programm ist nicht undicht Speicher ist guten Code zu , die entsprechend verwaltet die Systemressourcen zu schreiben. Stellen Sie sicher, dass für jeden Aufruf der Funktion , die Speicher zuweist , gibt es einen entsprechenden Aufruf, Speicher freigibt . Einige Sprachen wie Java , C # und VB.NET bieten Müllabfuhr, wo das System prüft regelmäßig , dass zugewiesenen Speicher ist immer noch in Gebrauch ist. Während diese Systeme nicht verhindern Speicherlecks vollständig , ist es weniger wahrscheinlich, dass sie auftreten . Andere Sprachen , wie C + +, erlauben Stapelzuweisung , wo ein Teil des Speichers wird automatisch , sobald die Variable , die darauf verweist Gültigkeitsbereich verlässt freigegeben . Durch die Verwendung der richtigen Sprache für die Aufgabe und das Beibehalten der guten Software schriftlich Praktiken können viele Speicherlecks ganz vermieden werden.
Erstellen Sie ein Memory Manager
Einige Computer- Programme erfordern so viel Code zu , dass das Lesen durch das Programm ausführen, um herauszufinden, wo Speicher ausgetreten ist einfach nicht machbar. In diesen Fällen kann es sinnvoll sein, einen Speicher -Manager-Komponente in das Programm schreiben. Die Software würde dann eine einheitliche Schnittstelle für die Zuteilung keine Stücke der Erinnerung, und der Manager hält fest, wo und wie diese Brocken zugeteilt werden. In seiner einfachsten Form , der Manager einfach eine Rückmeldung , so dass der Programmierer , um zu sehen , wie viel Speicher verwendet wird und welche Komponenten es zu benutzen. Es kann auch Müllabfuhr und steuern, wie Speicher zugewiesen wurde und freigegeben , so dass ein Programmierer nur einen Ort , um Speicherlecks zu suchen , statt den gesamten Code für das gesamte Programm .
Erstellen einer Test- Programm
Man kann oft auf dem Speicher durch ein Programm mit einer System-Tool , wie der Windows- Task-Manager oder "top" auf Unix /Linux , um zu bestimmen , wenn der Speicher zugespielt wird aussehen . Dies ist nicht immer Hinweise auf einen Memory Leak , kann aber einige anfängliche Feedback zu geben. Manchmal ist es möglich, ein einfaches Programm, das die verschiedenen Komponenten einer Software , um zu bestimmen , wenn der Speicher undicht Tests zu schreiben . Das Testprogramm kann dynamisch bestimmen oder gegeben Vorkenntnisse, wie viel Arbeitsspeicher ein Computer -Programm sollte zu nutzen. Dann ist sichergestellt, dass die verwendete Menge die Menge , die verwendet werden sollte. Wenn ein Speicherverlust auftritt, bietet das Testprogramm Feedback darüber, wie das passiert ist , so dass der Programmierer , um das Leck zu beheben.
Third Party Software
Programmierer können viele dritten verwenden Partei - Programme und Bibliotheken zu testen, ob ihre Software ist undicht Speicher . In dem Microsoft. NET Framework kann man Speicher Dichtheitsprüfung mit den Debug- Versionen von Speicherzuweisung Funktionen zu ermöglichen. Auf Linux- , Unix -und Mac , können Sie Tools wie Valgrind , dmalloc und Versicherung + + , um einen Speicherverlust zu isolieren. Viele Speicher Debugger sind auch für Windows verfügbar. Das beste Werkzeug für den Job hängt von der Entwicklungsumgebung und der Sprache verwendet wird, sowie spezifische Eigenschaften des Programms zu debuggen , wie Größe, Geschwindigkeit Anforderungen und sie , wie es mit dem System interagiert . Es gibt viele Tools , von denen wählen , und sie können ein Segen für die frustrierten Programmierer von der Suche nach dem schwer fassbaren letzten Leck müde sein .