Test für Speicherverlust

November 13

Test für Speicherverlust

Eine Reihe von Möglichkeiten stehen zur Verfügung, um festzustellen, ob ein Computerprogramm Speicherverlust ist. Ein Programmierer kann durch den Source-Code, um sicherzustellen, dass alle reservierten Speicher freigegeben wurde, er kann ein Programm schreiben, Prüfungen seine Software für Speicher-Lecks, er kann eine Speicherverwaltung, die ihm zu verfolgen verwendeter Speicher ermöglicht entwickeln oder er ein Programm eines Drittanbieters, die testet Speicherverluste verwenden kann, zu Sichten.

Was ist ein Memory Leak?

Ein Speicherverlust ist eine unerwünschte Speicherauslastung durch ein Computerprogramm, in das Programm reserviert Speicher für die Nutzung und versäumt, es aufzuheben, sobald der Speicher nicht mehr gebräuchlich ist. Dieser Teil des Speichers wird für das Computerprogramm nicht mehr verfügbar. Ein Programm, das über genug Zeit genug Speicherlecks kann verursachen, das System verfügbaren Speicher ausgeht, die das Programm verursachen können oder EDV-System zum Scheitern verurteilt. Speicherverluste verursachen eine System zu verlangsamen, eine unbefriedigende Geschwindigkeit wegen Speicher Dreschen. Programme, die für längere Zeit laufen, führen viele Zuweisungen oder Speicher in große Stücke können besonders anfällig für gefährliche Speicherverluste werden.

Verwenden Sie gute Programmierpraktiken

Der beste Weg um sicherzustellen, dass Ihr Programm nicht Speicherverlust ist soll guten Code zu schreiben, der entsprechend dem System Ressourcen verwaltet. Stellen Sie sicher, dass für jeden Funktionsaufruf, der Speicher reserviert, gibt es ein entsprechenden Aufruf, der Speicher freigibt. Einige Programmiersprachen wie Java, c# und VB, bieten Garbagecollection, wo das System regelmäßig prüft, dass reservierten Speicher verwendet wird. Während diese Systeme Speicherverluste nicht vollständig verhindern, ist es unwahrscheinlicher, dass sie eintreten werden. Andere Sprachen, wie C++, erlauben Stapelzuweisung, wo ein Teil des Speichers automatisch aufgehoben wird, sobald die Variable, die darauf verweist den Gültigkeitsbereich verlässt. Mit der richtigen Sprache für die Aufgabe und pflegen guten Software schreiben Praktiken, können viele Speicherverluste gänzlich vermieden werden.

Erstellen Sie eine Speicher-Manager

Einige Computerprogramme erfordern soviel Code ausgeführt werden, dass die Lesung durch das Programm zu finden, wo Speicher geleckt ist einfach nicht machbar ist. In diesen Fällen kann es sinnvoll, eine Speicher-Manager-Komponente in das Programm zu schreiben. Die Software müsste dann eine einheitliche Schnittstelle für die Zuweisung Brocken des Arbeitsspeichers und der Manager verfolgt die Spuren wo der und wie diese Abschnitte zugeordnet werden. In seiner einfachsten Form bietet der Manager einfach Feedback, so dass der Programmierers zu sehen, wie viel Arbeitsspeicher verwendet wird, und welche Komponenten sind benutzen. Es kann auch Garbagecollection und Steuern, wie Speicher zugeordnet ist und freigegeben, dass eine Programmierer nur an einer Stelle zu Speicher suchen Lecks, anstelle des Codes für das gesamte Programm.

Erstellen Sie ein Testprogramm

Oft kann man den Speicher, die von einem Programm mit einem Systemtool wie den Windows Task-Manager oder "oben" auf Unix/Linux, um festzustellen, ob der Speicher geleckt wird, wird verwendet. Dies ist nicht immer ein Beweis für einen Speicherverlust, sondern bieten eine erste Rückmeldung. Manchmal ist es möglich, ein einfaches Programm zu schreiben, das testet die verschiedenen Komponenten der ein Stück Software zu ermitteln, ob der Speicher undicht ist. Das Testprogramm aber kann dynamisch bestimmen oder Vorkenntnisse wie viel Arbeitsspeicher ein Computerprogramm verwenden soll. Es gewährleistet, dass die verbrauchte Menge ist die Menge, die verwendet werden soll. Wenn das Testprogramm bietet Feedback auf wie das geschehen ist, tritt ein Arbeitsspeicherverlust auf, so dass der Programmierers, das Leck zu beheben.

Software von Drittanbietern

Programmierer können viele Fremdanbieter-Programme und Bibliotheken um zu testen, ob ihre Software Speicher undicht ist. Im Microsoft NET Framework kann eine Speicherverlust testen mit der Debug-Versionen der Funktionen des Speicher-Allokation aktivieren. Unter Linux, Unix und Mac können Sie Tools wie Valgrind, Dmalloc und versichern ++ ein Memory Leak zu isolieren. Viele Speicher-Debugger sind auch für Windows verfügbar. Das beste Tool für den Job hängt von der Entwicklungsumgebung und der Sprache, als auch die spezifischen Merkmale des Programms zu debuggen, wie Größe, Geschwindigkeit Anforderungen und sie weg es mit dem System interagiert. Es gibt viele Werkzeuge zur Auswahl können, und sie ein Segen für den frustrierten Programmierer müde von der Suche nach diesem letzten flüchtigen Leck.