Folien

 Documents

 28 views
of 19
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
Java Garbage Collection Angelika Kusel, 0055089 Überblick  Was ist Garbage Collection?  Vor- und Nachteile von GC  GC-Algorithmen/Verfahren  Java…
Share
Transcript
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 f unbenützt from Space to Space a b c d e f a d from Space to Space scan free a b c d e f a d c from Space 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 newFrom newTo Wurzelzeiger 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 1.4 Zug 2 2.1 2.2 2.3 Zug 3 3.1 3.2 3.3 3.4 3.5 Train Algorithmus (2/5)  Welche Objekte müssen kopiert werden? Wurzelzeiger a b c d e f Remembered Sets c 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 S T S T A C D E F D E F C B, F C, R B B A R Train Algorithmus (4/5) T F C D E E, S B A R S 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 nursery Objekte from to Survivor Space Survivor Space newSpace Platz für lang- Mark and Compact (default) oder lebige Objekte 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
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks