Folien

Werbung
Java Garbage
Collection
Angelika Kusel, 0055089
Überblick

Was ist Garbage Collection?

Vor- und Nachteile von GC

GC-Algorithmen/Verfahren

Java Garbage Collection

Anpassung des Java GCs an die eigene
Anwendung
Was ist Garbage Collection?

automatische Erkennung und Freigabe von
nicht mehr referenzierten Objekten
a

b
a = b;
a
b
somit zurück gewonnener Speicher steht
dem System wieder zur Verfügung
Vor- und Nachteile
Vorteile:
 kein explizites Freigeben von Speicher
nötig
 Beseitigung von folgenden Fehlerquellen
 zu frühe Freigabe (Dangling Pointer)
 gar keine Freigabe
Nachteile:
 zusätzlicher Overhead, der vom
Laufzeitsystem bewältigt werden muss
GC-Algorithmen/Verfahren (1/2)



2 grundsätzliche Aufgaben:
 „Garbage“-Objekte erkennen
 Speicherplatz dem Programm wieder
zugänglich machen
„lebendige“ Objekte sind solche, die von einem
Wurzelzeiger aus erreicht werden können
Wurzelzeiger finden sich in:
 lokalen Variablen am Stack
 in globalen (statischen)
Variablen
 in Registern
Heap
GC-Algorithmen/Verfahren (2/2)

Reference Counting -> ältestes Verfahren,
nicht in Java verwendet

Mark and Sweep

Mark and Compact

Stop and Copy

Generation Scavenging

Train Algorithmus
Mark and Sweep

2 Phasen: mark-Phase und sweep-Phase

mark-Phase:
 Markierung aller von den Wurzelzeigern aus
erreichbaren Objekte

sweep-Phase:
 sequentieller Heap-Durchlauf
 Zurücksetzen der Markierung
 Freigabe von unmarkierten Objekten
Mark and Compact
-> verdichtende Variante von Mark and Sweep
1) mark();
2) berechne für jeden markierten Block die Zieladresse
nach Verdichtung
0
32
64
3) Biege Wurzelzeiger und die Zeiger in den Blöcken auf
die neue Zieladresse um
4) Verschiebe die Blöcke auf die neue Zieladresse
Stop and Copy (1/2)
a
b
c
d
e
unbenützt
f
from Space
a
b
c
d
to Space
e
f
a
d
to Space
from Space
scan
a
b
c
d
from Space
e
f
a
free
d
c
to Space
scan == free
Stop and Copy (2/2)
Vorteile:
 verdichtendes Einpaß-Verfahren
(vgl. Mark and Compact: 1 Mark-Phase plus 3
Sweep-Phasen)
 Laufzeit abhängig von der Anzahl der lebenden
Objekte (bei Mark and Sweep: abhängig von
Heapgröße)
Nachteile:
 nur die Hälfte des Heaps kann verwendet werden
 das Kopieren der Objekte kostet Zeit
Generation Scavenging


Variante des Stop and Copy
Unterscheidung zwischen kurzlebigen und
langlebigen Objekten
Wurzelzeiger
newFrom
newTo
oldFrom
oldTo
Train Algorithmus (1/5)



inkrementelles Verfahren
der gesamte Heap ist in Blöcke gleicher Größe
unterteilt
bei jedem Aufruf wird 1 Block mit dem Stop and Copy
Verfahren bereinigt (jeweils der erste Waggon im Zug
mit der niedrigsten Nummer)
Zug 1
1.1
1.2
1.3
Zug 2
2.1
2.2
2.3
Zug 3
3.1
3.2
3.3
1.4
3.4
3.5
Train Algorithmus (2/5)

Welche Objekte müssen kopiert werden?
Wurzelzeiger
a
Remembered Sets



b
c
c
d
e
f
d
Wohin werden die Objekte kopiert?
-> abhängig davon, von wo das Objekt erreicht wird
von Wurzelzeiger: in den letzten Waggon des letzten
Zugs (nicht erster Zug), wenn voll -> neuer Zug
von einem Waggon des Zugs z: in den letzten Waggon
des Zugs z, wenn voll -> neuer Waggon im Zug z
Train Algorithmus (3/5)

Annahme: max. 3 Objekte finden in einem Waggon
Platz
R
A
C
D
S
T
E
F
D
B, F
B
S
T
E
F
C, R
B
A
R
C
Train Algorithmus (4/5)
T
F
C
E, S
B
A
R
S
D
E
Train Algorithmus (5/5)
F
D
E
C
C
B
A
R
S
T
B
A
R
S
T
Aufbau in Java Hotspot VM 1.3.1

vereinigt mehrere Verfahren
Anlage neuer
Objekte
nursery
from
Survivor Space
to
Survivor Space
newSpace
Platz für langlebige Objekte
Mark and Compact (default) oder
Train Algorithmus
oldSpace
Heap
ab Java Hotspot VM 1.4.1

2 zusätzliche parallele GC-Verfahren
(für parallele Anwendungen)

Für die junge Generation
 Parallel Collector (paralleles Stop &
Copy - Verfahren)
Für die alte Generation
 Concurrent Mark & Compact Collector

Anpassung des GCs




-Xincgc
Umschaltung auf Train Algorithmus
-XX:+UseParallelGC
Umschaltung auf parallele GC
-verbose:gc bzw. –Xloggc:file
erzeugt Ausgabe bei jedem GC-Lauf (zur
Analyse des Verhaltens des GCs)
zahlreiche weitere Parameter zur
Steuerung der Größe bzw. der
Größenverhältnisse
Herunterladen