1
1
1
1
Java Garbage Collector:
Funktionsweise und Optimierung
Mathias Dolag
Prof. Dr. Peter Mandl
(DOAG 2012, 20.11.2012)
2
2
2
2 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Algorithmen
Tuning
Performance-Messungen
Zusammenfassung
Agenda
3
3
3
3 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Studium
2012: Bachelor of Science
(Wirtschaftsinformatik)
Aktuell: Master Informatik
(Schwerpunkt Software-Engineering)
Beruflich
Software-Entwickler bei iSYS Software GmbH
JavaEE
Rich Client Platform (RCP)
Der Referent
4
4
4
4
Algorithmen
5
5
5
5 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Typische Objektpopulation einer Java-Applikation
Algorithmen – Generational Garbage Collecting
Quelle: Langer, A.; Kreft, K.: Java Core Programmierung. Memory Model und Garbage Collection
6
6
6
6 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Heap-Aufteilung der Sun/Oracle HotSpot JVM
Minor / Major Collection
Tenuring Threshold
Promotion
Algorithmen - Generational Garbage Collecting II
Quelle: Anlehnung an Langer, A.; Kreft, K.: Java Core Programmierung. Memory Model und Garbage Collection
7
7
7
7 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Grundlegendster GC-Algorithmus
Nur zwei Phasen
Markierung (Mark)
Aufräumen (Sweep)
Algorithmen – Mark-and-Sweep
Quelle: Anlehnung an Langer, A.; Kreft, K.: Java Core Programmierung. Memory Model und Garbage Collection
8
8
8
8 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Sun/Oracle HotSpot JVM – Variante
Young Generation = Eden + 2x Survivor Space
Ziele
Promotion in Old Generation herauszögern
Vermeiden von Fragmentierung
Schnelle Allokation neuer Objekte
Algorithmen – Mark-and-Copy
Quelle: Anlehnung an Wie funktioniert der Java Garbage Collector; http://it-republik.de/jaxenter/artikel/2452
9
9
9
9 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Intergenerational References
Algorithmen – Mark-and-Copy II
Quelle: Anlehnung an Langer, A.; Kreft, K.: Java Core Programmierung. Memory Model und Garbage Collection
10
10
10
10 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Zusammenschieben/Verdichten überlebender Objekte
Stop-the-World – Algorithmus
Einsatz meist auf Old Generation
Hauptziele
Vermeiden von Fragmentierung
Schnelle Allokation
Serielle und parallele Variante
Algorithmen – Mark-and-Compact
11
11
11
11 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Algorithmen – Mark-and-Compact II
Quelle: Anlehnung an Langer, A.; Kreft, K.: Java Core Programmierung. Memory Model und Garbage Collection
12
12
12
12 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Nebenläufig zur Applikation ausführbarer Collector
Old Generation – Algorithmus
Hauptziel: Verkürzung von Stop-the-World – Pausen
Reiner Sweep – Algorithmus Fragmentierung
Allokation neuer Objekte mittels Free Lists
Annahmen über zukünftigen Speicherbedarf
Algorithmen – Concurrent Mark-and-Sweep
13
13
13
13 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Neuer von Sun/Oracle entwickelter Collector (seit 2004)
Final seit Java 7, experimentell seit Java 6 U14
Vorgebbar: Pausenzeiten / Durchsatz
Verdichtung des Heap über Laufzeit der Applikation
Vorrangiges Aufräumen von Regionen mit hohem
„Müllanteil“
Algorithmen – Garbage First (G1)
14
14
14
14 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Evakuierung und Verdichtung
Bestimmung eines Collection Set
Zwei Modi: Fully / Partially Young Mode
Algorithmen – Garbage First (G1) II
Quelle: Anlehnung an Langer, A.; Kreft, K.: Java Core Programmierung. Memory Model und Garbage Collection
15
15
15
15
Tuning
16
16
16
16 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Speicherverbrauch verringern
Durchsatz erhöhen
Pausenzeiten verringern
Zielkonflikte
Tuning – Ziele & Kennzahlen
Hoher Durchsatz
Kurze
Pausenzeiten
Geringer
Speicherverbrauch
17
17
17
17 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Durchsatz erhöhen Anpassung Größenverhältnisse
Young Generation / Old Generation
Eden / Survivor Spaces
Promotion von Objekten verhindern
Parallelen Collector einsetzen (z.B. Parallel Mark-and-Compact)
Pausenzeiten verringern Geeignete Collectoren
CMS / G1
Garbage Collection hinauszögern
Starke Vergrößerung der Old Generation
Objekte in Young Generation sterben lassen
Explizite Garbage Collection auslösen (System.gc();)
Tuning – Maßnahmen
18
18
18
18 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
JVisualVM (inkl. VisualGC-Plugin)
Tuning – Tools
Quelle: http://cybergav.in/wp-content/uploads/2010/01/VisualVM_VisualGC.png
19
19
19
19 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
GCViewer
Tuning – Tools II
20
20
20
20 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Tuning – Tools III
21
21
21
21
Performance Messungen – Ergebnisse
22
22
22
22 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Performance Messungen – Testumgebung
Apache
Requests
JBoss mit Webshop-System
JBoss mit Webshop-System
JBoss
Requests abspielen Virtuelle Maschine auf dediziertem
Server mit Abbild des Produktiv-Systems
23
23
23
23 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Garbage Collection Standardeinstellungen
Young Generation: Parallel Mark-and-Copy
Old Generation: Parallel Mark-and-Compact
Parallele GC-Threads: 6
Performance Messungen – Ergebnisse
Durchsatz Gesamtpausenzeit (in sek.)
24
24
24
24 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Concurrent Mark-and-Sweep
Heap-Größe: 16384MB
Young Generation: Parallel Mark-and-Copy
Old Generation: Concurrent Mark-and-Sweep
Performance Messungen – Ergebnisse II
Durchsatz Durchschnittliche Pausenzeit
25
25
25
25 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Garbage First (G1)
Heap-Größe: 16384MB
Parallele GC-Threads: 30
Performance Messungen – Ergebnisse III
Durchsatz Pausenvorgabe (ms)
26
26
26
26
Zusammenfassung
27
27
27
27 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Unterschiedlichste Garbage Collectoren
Beste Kennzahlen zur Performance Messung
Durchsatz
Pausenzeit (Stop-the-World-Pause)
Nicht möglich allgemeingültige Garbage Collection -
Einstellungen zu geben
Richtlinien
JVM viel (physikalischen) Arbeitsspeicher zuweisen
Verhältnis Young Generation – Old Generation
Passenden Collector-Typen auswählen
Zusammenfassung
28
28
28
28 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Vielen Dank für Ihre Aufmerksamkeit !
29
29
29
29 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
Mathias Dolag
iSYS Software GmbH
Grillparzer Str. 10
80665 München
E-Mail: [email protected]
Telefon: +49 89 / 46 23 28 – 0
Web: http://www.isys-software.de
Prof. Dr. Peter Mandl
Hochschule München
Loth Str. 64
80335 München
E-Mail: [email protected]
Telefon: +49 89 / 1265 – 3704
Web: http://www.prof-mandl.de
Kontaktinformationen