Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und...
-
Upload
karsten-neubecker -
Category
Documents
-
view
105 -
download
0
Transcript of Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und...
![Page 1: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/1.jpg)
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
![Page 2: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/2.jpg)
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
![Page 3: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/3.jpg)
Cheneys Copying Collector (1)
Iterativer Algorithmus
Verbindet Kopieren und Scannen
Verwendet zwei Zeiger: scan / free
Forwarding-Zeiger um „Sharing“ zu garantieren
„The tricolour abstraction“
![Page 4: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/4.jpg)
Cheneys Copying Collector (2)
Der Algorithmus:
![Page 5: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/5.jpg)
![Page 6: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/6.jpg)
![Page 7: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/7.jpg)
![Page 8: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/8.jpg)
![Page 9: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/9.jpg)
![Page 10: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/10.jpg)
![Page 11: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/11.jpg)
![Page 12: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/12.jpg)
![Page 13: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/13.jpg)
![Page 14: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/14.jpg)
![Page 15: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/15.jpg)
![Page 16: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/16.jpg)
![Page 17: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/17.jpg)
![Page 18: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/18.jpg)
![Page 19: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/19.jpg)
![Page 20: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/20.jpg)
![Page 21: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/21.jpg)
![Page 22: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/22.jpg)
![Page 23: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/23.jpg)
![Page 24: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/24.jpg)
![Page 25: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/25.jpg)
![Page 26: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/26.jpg)
![Page 27: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/27.jpg)
![Page 28: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/28.jpg)
![Page 29: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/29.jpg)
![Page 30: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/30.jpg)
![Page 31: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/31.jpg)
![Page 32: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/32.jpg)
![Page 33: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/33.jpg)
![Page 34: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/34.jpg)
![Page 35: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/35.jpg)
![Page 36: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/36.jpg)
![Page 37: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/37.jpg)
![Page 38: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/38.jpg)
![Page 39: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/39.jpg)
![Page 40: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/40.jpg)
![Page 41: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/41.jpg)
![Page 42: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/42.jpg)
![Page 43: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/43.jpg)
![Page 44: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/44.jpg)
![Page 45: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/45.jpg)
![Page 46: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/46.jpg)
![Page 47: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/47.jpg)
![Page 48: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/48.jpg)
![Page 49: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/49.jpg)
![Page 50: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/50.jpg)
![Page 51: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/51.jpg)
![Page 52: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/52.jpg)
![Page 53: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/53.jpg)
![Page 54: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/54.jpg)
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
![Page 55: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/55.jpg)
Multiple-Area Collection
Statische Bereiche (static area) Bereiche für grosse Objekte (large object area) „Compacting Garbage Collection“:
![Page 56: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/56.jpg)
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
![Page 57: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/57.jpg)
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
![Page 58: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/58.jpg)
Umgruppierungsstrategien
Depth-first vs Breadth-first Copying
„Stackless recursive copying collection“ „Approximately depth-first copying“ „Hierarchical decomposition“ „Hash tables“
![Page 59: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/59.jpg)
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“
![Page 60: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/60.jpg)
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
![Page 61: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/61.jpg)
Hierarchical decomposition
Ähnlich wie „Approximately depth-first copying“
4 Zeiger (2 Scan, 2 Free)
Nur für Baumstrukturen empfehlenswert
![Page 62: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/62.jpg)
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
![Page 63: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/63.jpg)
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.
![Page 64: 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.](https://reader035.fdocuments.us/reader035/viewer/2022081602/55204d7f49795902118d1377/html5/thumbnails/64.jpg)
Danke für Ihre Aufmerksamkeit!
FRAGEN ?