Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und...

Post on 06-Apr-2015

105 views 0 download

Tags:

Transcript of Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und...

Die Idee hinter Copying Garbage Collection (1)

Aufteilung des Heaps in zwei Teile: To-Space und From-Space

Nutzung eines Teiles durch das Programm

Ist der Heap(-Teil) aufgebraucht, findet Garbage Collection statt und das Programm wird anschliessend im anderen Teil fortgesetzt

Die Idee hinter Copying Garbage Collection (2)1. Vertauschen der beiden Hälften (From-Space, To-Space)

2. Kopieren der Objekte aus der root-set in den To-Space

3. Scannen der Objekte im To-Space und ggf. Kopieren referenzierter Objekte bzw. Korrektur der Referenzen

Cheneys Copying Collector (1)

Iterativer Algorithmus

Verbindet Kopieren und Scannen

Verwendet zwei Zeiger: scan / free

Forwarding-Zeiger um „Sharing“ zu garantieren

„The tricolour abstraction“

Cheneys Copying Collector (2)

Der Algorithmus:

Allokation

CPU-Kosten von stop-and-go Garbage Collection niedrig, da nur aktive Knoten besucht werden und das Kopieren von kleinen Objekten billig ist

Überprüfen des Speichers im Semispace

Inkrementieren des free Zeigers

Rückgabe der neuen Adresse

Multiple-Area Collection

Statische Bereiche (static area) Bereiche für grosse Objekte (large object area) „Compacting Garbage Collection“:

Effizienz

R … Anzahl der erreichbaren Knotenc … Konstante (abhängig von der Zelle)M ...Grösse eines Semi-Spaces … Grösse einer Zelleg … CPU-Kosten pro Garbage Collection einer Zelle

Lokalität

Falsche Strategie zerstört die Lokalität(z.B.: Cheney‘s breadth-first search)

Richtige Heap-Grösse wählen

Paging

Unterstützung durch Betriebssystem

Umgruppierungsstrategien

Depth-first vs Breadth-first Copying

„Stackless recursive copying collection“ „Approximately depth-first copying“ „Hierarchical decomposition“ „Hash tables“

Stackless recursive copying collection

Grundeinheit der Heap Allokation ist ein „frame of closures“ von variabler Länge

Jedes „closure“ enthält einen Code-Zeiger und einen Zeiger auf einen Heap-Rahmen

Rekursiv, aber Rekursionsstack liegt in bereits besuchten From-Space „closures“

Approximately Depth-first Copying

Es wird immer an der zuletzt teilweise gefüllten Seite im To-Space fortgesetzt

Partial untersucht die Seite am Ende von To-Space(benutzt Breitensuche)

Ist Partial fertig, wird übliche Breitensuche fortgesetzt und To-Space Objekte eingelesen

Hierarchical decomposition

Ähnlich wie „Approximately depth-first copying“

4 Zeiger (2 Scan, 2 Free)

Nur für Baumstrukturen empfehlenswert

Hash tables

Traversieren vermeiden

Lineare Liste globaler Variablen

Objekte nach Entstehung geordnet

Liste wird von Garbage Collection verwendet

Collector erreicht Objekte in der Erzeugungsreihenfolge

Gute Lokalität

Copying Collection – Ja oder Nein?

Ja wenn Speicherverwaltung von Allokation dominiert wird Es viele kleine, kurzlebige Objekte gibt Die Verzögerung durch GC keine Rolle spielt

Alternative:•Hybrides System: ein Teil wird von einem Copying

Collector behandelt, ein anderer Teil vom z.B. Mark-Sweep oder Mark-Compact

Copying Garbage Collection bildet die Grundlage für andereVerfahren. Generationale und inkrementelle Garbage Collection bauen auf Copying auf.

Danke für Ihre Aufmerksamkeit!

FRAGEN ?