Eng verwandt mit dem Mark & Sweep-Algorithmus ist das Stop & Copy-Verfahren. Mit ihm wird das Fragmentierungsproblem des oben genannten Verfahren gelöst, allerdings wird mehr Speicher benötigt (oder ein kleinerer Objekt-Pool und damit häufigere Speicherbereinigungen). Dieser Algorithmus wird in der Microsoft Java VM verwendet, die bei ihrer Einführung zu den schnellsten verfügbaren virtuellen Maschinen zählte.
Das Stop & Copy-Verfahren erstellt zwei Speicher-Pools für Objekte, von denen jedoch nur einer verwendet wird. Bei der Zuweisung von Objekten wird einfach der nächste verfügbare freie Speicherplatz des Pools vergeben. Wenn der Pool voll ist oder das System den nicht mehr benötigten Speicherplatz freigeben will, wird der gleiche Referenzdurchlauf wie im Mark & Sweep-Algorithmus ausgeführt, so dass sämtliche von einem Systemobjekt ausgehenden Referenzen innerhalb der gesamten Anwendung verfolgt werden. Allerdings werden diese nicht nur markiert, sondern vom aktuellen Speicher-Pool in den inaktiven Pool kopiert.
Dabei werden die Live-Objekte eines nach dem anderen in den neuen Pool übertragen. Nach Abschluss dieses Vorgangs wird dieser Pool anstelle des anderen Pools aktiviert. Da nur aktive Objekte kopiert werden, bleiben nicht mehr benötigte Objekte im nun inaktiven Pool zurück. Sie werden also nicht speziell erfasst, sondern einfach nicht mehr benutzt. Der Kopiervorgang defragmentiert dabei schrittweise den neuen Pool, indem er die Objekte direkt hintereinander anordnet.
Auch für das Stop & Copy-Verfahren muss die Ausführung der Anwendung unterbrochen werden, damit die Objekte erfasst und in den entsprechenden Speicher-Pool verschoben werden können. Während dieses Vorgangs kann die bereinigte Anwendung nicht ausgeführt werden, was in manchen Programmen zu einem unsteten Verhalten führt.
Neueste Kommentare
Noch keine Kommentare zu Systeme zur automatischen Speicherbereinigung
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.