• Keine Ergebnisse gefunden

Java Garbage Collection

N/A
N/A
Protected

Academic year: 2022

Aktie "Java Garbage Collection"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Java Garbage Collection

Angelika Kusel, 0055089

(2)

Überblick

Was ist Garbage Collection?

Vor- und Nachteile von GC

GC-Algorithmen/Verfahren

Java Garbage Collection

Anpassung des Java GCs an die eigene

Anwendung

(3)

Was ist Garbage Collection?

automatische Erkennung und Freigabe von nicht mehr referenzierten Objekten

somit zurück gewonnener Speicher steht dem System wieder zur Verfügung

a b a = b; a b

(4)

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

(5)

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

(6)

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

(7)

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

(8)

Mark and Compact

-> verdichtende Variante von Mark and Sweep 1) mark();

2) berechne für jeden markierten Block die Zieladresse nach Verdichtung

3) Biege Wurzelzeiger und die Zeiger in den Blöcken auf die neue Zieladresse um

4) Verschiebe die Blöcke auf die neue Zieladresse

0 32 64

(9)

Stop and Copy (1/2)

to Space

unbenützt

from Space

a b c d e f

to Space from Space

a b c d e f a d

from Space

a b c d e f

to Space

a d c

scan free

scan == free

(10)

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

(11)

Generation Scavenging

Variante des Stop and Copy

Unterscheidung zwischen kurzlebigen und langlebigen Objekten

newFrom newTo

oldFrom oldTo

Wurzelzeiger

(12)

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)

1.1 1.2 1.3 1.4

2.1 2.2 2.3

Zug 1

Zug 2

(13)

Train Algorithmus (2/5)

Welche Objekte müssen kopiert werden?

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

a b c d e f

Remembered Sets c d Wurzelzeiger

(14)

Train Algorithmus (3/5)

R

A C

S

D E

T F

B

B, F

S

D E

T F

B

C, R

R A

C

Annahme: max. 3 Objekte finden in einem Waggon Platz

(15)

Train Algorithmus (4/5)

T F

B

E, S

R A

C

S

D E

(16)

Train Algorithmus (5/5)

B

C

R A

S

D E

T

F

C

B A

(17)

Aufbau in Java Hotspot VM 1.3.1

vereinigt mehrere Verfahren

newSpace

oldSpace

nursery

from to

Survivor Space Survivor Space

Heap

Anlage neuer Objekte

Platz für lang- lebige Objekte

Mark and Compact (default) oder Train Algorithmus

(18)

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

(19)

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

Referenzen

ÄHNLICHE DOKUMENTE

Während ih- re Altersgenossinnen in einem Land zurechtkommen müssen, wo zu Silvester Vergewaltigungs- Schutzzonen eingerichtet werden oder die Frankfurter Goethe-Uni-

Das Reference Counting ist das älteste Verfahren und ich möchte es nur der Vollständigkeit halber kurz erwähnen, da es nur mehr in Spezialfällen verwendet wird. In Java wird nicht

Als dds Deutsche Museum in M ü n c h e n am 70. Sie erinnert „den Vorfahren zur Ehr, der Jugend zur Lehr", mit Bildern, Büsten und Reliefplaketten an die

Brunner, einer der verdienstvollsten Pioniere für Nahkampf in unserer Armee, schreibt darüber in seinem Buche: «Nahkampf ist nicht Lehre und nicht Doktrin — Nahkampf ist Töten!»

Ein Klassendiagramm besteht aus dem fett gedruckten Namen der Klasse sowie einem Bereich für die Attribute (Eigenschaften) und einem Bereich für die ausführbaren Methoden der

Umso verstörender ist, was US-amerikanische Onkologen nun in einer grossen Studie ans Licht gebracht haben: Selbst bei Menschen mit einem fortgeschrittenen Krebsleiden und einer

ventar zum Vorschein 3 ), darunter auch Kuochenpfeilspitzen. Eine Reihe Gräben förderten Kohle ans Licht, weiter Topfscherben, darunter auch eine mit Grubenornament,

Einen Fall dieser Art, dessen Grundursnd1en mindestens nid1t ein- deutig klar nad1weisbar sind, wahrsd1einlid1 aber durd1 Sdmeebrum allein herbeigeführt wurden, fand