Top Banner
1 1 1 1 Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012)
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)

Oct 15, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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