Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.
-
Upload
ishild-wetterau -
Category
Documents
-
view
105 -
download
3
Transcript of Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.
![Page 1: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/1.jpg)
Mark – Compact GC & Performancemessungen
Bernhard Prügl, 0156212
![Page 2: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/2.jpg)
2/18
Inhalt
Motivation für Mark – Compact Algorithmenüberblick 4 Algorithmen im Detail Zusammenfassung Algorithmen Performance der verschieden Garbage
Collection Strategien
![Page 3: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/3.jpg)
3/18
Motivation für Mark – Compact
Lange Programmlaufzeit führt zu Fragmentierung, welche folgende Probleme verursacht:
Aufwand zum Anlegen neuer Objekte steigt Speicher wird nicht optimal ausgenützt Nacheinander angelegte Objekte oft nicht
nebeneinander Mark-Compact reduziert diese Probleme
![Page 4: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/4.jpg)
4/18
AlgorithmenüberblickGrundsätzliche 3 Phasen:1. Markieren der lebendigen Knoten.2. Kompaktierung des Speichers (Knoten verschieben).3. Aktualisieren der Zeiger auf verschobene Knoten.
Kriterien anhand derer eine Einteilung möglich ist: Einteilung nach Art wie verschobene Knoten
angeordnet werden. 2 oder 3 Durchläufe zum Kompaktieren. Einteilung nach zusätzlich benötigten Speicher Weitere Anforderungen, z.B. nur Knoten gleicher
Größe
![Page 5: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/5.jpg)
5/18
Zwei Finger Algorithmus
2 Zeiger "free" sucht freien
Speicher "live" sucht lebendige
Knoten "live" wird auf "free"
verschoben Neue Adresse wird in
"live" hinterlassen
![Page 6: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/6.jpg)
6/18
Lisp 2 Algorithmus (1/2)
Adressenweiterleitend Zusätztliche
Speicherzelle im Header jedes Knoten
"free" läuft von Anfang bis Ende
Neue Adresse wird in Header jedes Knoten geschrieben
![Page 7: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/7.jpg)
7/18
Lisp 2 Algorithmus (2/2)
2.Durchlauf: interne Zeiger aktualisieren anhand der Adresseinträge in den Headern
3.Durchlauf: Knoten tatsächlich verschieben
![Page 8: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/8.jpg)
8/18
Haddon-Waite Algorithmus (1/2)
Tabellenbasiert Zeiger durchläuft
Speicher von Anfang bis Ende
Knoten werden sofort verschoben
Information über Verschiebung in Tabelle eintragen
![Page 9: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/9.jpg)
9/18
Haddon-Waite Algorithmus (2/2)
Tabelle am Ende des bearbeiteten Bereichs wird bei Bedarf verschoben
Am Ende muss Tabelle sortiert werden
2. Durchlauf: interne Zeiger mit Hilfe der Tabelle aktualisieren
![Page 10: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/10.jpg)
10/18
Threading
Zeiger werden verbogen durch tauschen der Inhalte
P enthält eine Liste mit allen Zeigern die auf P zeigen
Info im letzten Knoten
![Page 11: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/11.jpg)
11/18
Jonkers Algorithmus (1/2)
Threaded Zuerst
vorwärtszeigende Zeiger threaden
Wird P erreicht werden alle schon gethreadeden Knoten aktualisiert
![Page 12: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/12.jpg)
12/18
Jonkers Algorithmus (2/2)
Vorwärtszeigende Zeiger zeigen jetzt auf zukünftiges P
Rückwärtszeigende Zeiger werden gethreaded
2. Durchlauf: Knoten verschieben
Alle rückwärtszeigenden Zeiger aktualisieren
![Page 13: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/13.jpg)
13/18
Überblick
Geeigneter Algorithmus muss entsprechend Vorgaben gewählt werden.
![Page 14: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/14.jpg)
14/18
Performance
Performancemessungen in GC Bereich Messungen auf AMD Athlon XP 2600+, ausgeführt
von Stephen M Blackburn, 2004
3 Graphiken: Laufzeitmessungen des gesamten Programms und
der Garbage Collection allein Cache Misses bei verschiedenen GC Strategien Performance in Generationensystemen
![Page 15: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/15.jpg)
15/18
Laufzeitmessungen
X-Achse: Heap Größe Y-Achse: Zeit
![Page 16: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/16.jpg)
16/18
Cache Misses
X-Achse: Heap Größe Y-Achse: Zeit (a) / Cache Misses (b - d)
![Page 17: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/17.jpg)
17/18
Performance in Generationensystemen
X-Achse: Speichergröße für neue Objekte
Y-Achse: Zeit (a-c) / Cache Misses (d-f)
![Page 18: Mark – Compact GC & Performancemessungen Bernhard Prügl, 0156212.](https://reader036.fdocuments.us/reader036/viewer/2022070310/55204d7f49795902118d1023/html5/thumbnails/18.jpg)
18/18
Danke für eure Aufmerksamkeit