Was ist ein Griffleck?
Ein Handle-Leck ist eine Art von Ressourcenleck, eine Situation, in der eine endliche Rechenressource, wie z. B. Speicher, von einer Anwendung übermäßig beansprucht wird. Handle-Lecks treten auf, wenn eine Anwendung ein „Handle“, einen speziellen Verweis auf eine Systemressource, öffnet und dieses Handle nicht schließt, wenn es nicht mehr benötigt wird. Sie können die Leistung beeinträchtigen, zu Programm- oder Systemabstürzen führen und ein Symptom für schwerwiegende Fehler oder fehlerhafte Codierung in einem Softwareprogramm sein. Programmierern stehen zahlreiche Tools zur Fehlerbehebung zur Verfügung, mit denen sie Leckagen bekämpfen können.
In der Computerprogrammierung ist ein Handle eine Struktur, die auf eine Systemressource verweist, z. B. einen Speicherblock oder eine Datei auf einer Festplatte. Handles bieten eine Abstraktionsebene zwischen Systemressourcen und Anwendungen und werden normalerweise vom Betriebssystem eines Computers über eine „Handle-Tabelle“ verwaltet, die jedem Handle eine Ressource zuordnet. Ein Programmierer kann ein Handle verwenden, um auf ein Fenster zu verweisen, das dann vom Betriebssystem auf dem Bildschirm angezeigt wird.
Eine gut funktionierende Anwendung gibt Handles frei, die nicht mehr benötigt werden, wodurch Ressourcen freigegeben werden und sichergestellt wird, dass das Betriebssystem keine nicht verwendeten Ressourcen verwaltet. Programmierfehler, Softwarefehler und Inkompatibilitäten zwischen Software können dazu führen, dass Programme nicht mehr benötigte Handles festhalten. Während die Anwendung weiterhin ausgeführt wird, kann eine große Anzahl nicht benötigter Handles angesammelt werden. Dies ist als Griffleck bekannt.
Handle Leaks können wie andere Arten von Ressourcenlecks zu einer schleppenden Leistung, Systeminstabilität oder im Extremfall zu einem Computerabsturz führen. Dies liegt daran, dass Handles endliche Ressourcen wie den Systemspeicher belegen. Wenn eine Anwendung eine übermäßige Anzahl von Handles generiert, ohne diese zu schließen, sind diese Ressourcen erschöpft. Der genaue Schwellenwert, ab dem ein Handle-Leck Probleme verursacht, hängt vom Betriebssystem des Computers, der verfügbaren Speicherkapazität und anderen Faktoren ab. Ein Leck, bei dem einige Dutzend Handles offen bleiben, wird von den Benutzern wahrscheinlich nicht bemerkt, während ein Handle-Leck von zehntausend oder mehr ein Zeichen für einen schwerwiegenden Fehler im Anwendungscode ist.
Programmierer müssen besonders darauf achten, mit Lecks umzugehen, da dies zu Problemen führen kann. Die grundlegendste Methode zur Diagnose eines Handle-Lecks ist die Beobachtung der Handle-Anzahl, dh der Anzahl der Handles, die ein Prozess oder eine Anwendung derzeit geöffnet hat, während die Anwendung ausgeführt wird. Der Windows® Task-Manager kann diese Informationen anzeigen, und Hilfsprogramme von Drittanbietern für Windows® und andere Betriebssysteme können ebenfalls hilfreich sein, um undichte Punkte zu identifizieren und aufzuspüren.