Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector:...

29
1 1 1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

Transcript of Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector:...

Page 1: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

1

1

1

1

Java Garbage Collector:

Funktionsweise und Optimierung

Mathias Dolag

Prof. Dr. Peter Mandl

(DOAG 2012, 20.11.2012)

Page 2: Java Garbage Collector: Funktionsweise und Optimierung file1 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

Page 3: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 4: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

4

4

4

4

Algorithmen

Page 5: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 6: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 7: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 8: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 9: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 10: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 11: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 12: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 13: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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)

Page 14: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 15: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

15

15

15

15

Tuning

Page 16: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 17: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 18: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 19: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

19

19

19

19 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

GCViewer

Tuning – Tools II

Page 20: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

20

20

20

20 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

Tuning – Tools III

Page 21: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

21

21

21

21

Performance Messungen – Ergebnisse

Page 22: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 23: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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.)

Page 24: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 25: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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)

Page 26: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

26

26

26

26

Zusammenfassung

Page 27: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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

Page 28: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

28

28

28

28 Mathias Dolag / Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

Vielen Dank für Ihre Aufmerksamkeit !

Page 29: Java Garbage Collector: Funktionsweise und Optimierung file1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)

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