(JVM) Garbage Collection - Brown Bag Session
-
Upload
jens-hadlich -
Category
Technology
-
view
290 -
download
1
Transcript of (JVM) Garbage Collection - Brown Bag Session
![Page 1: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/1.jpg)
(JVM) Garbage Collection & Co.
Brown Bag Session
Jens Hadlich 2015-12-08
![Page 2: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/2.jpg)
Garbage Collection
2
![Page 3: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/3.jpg)
Why should I care?
![Page 4: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/4.jpg)
Garbage Collection
4
Can have a huge impact
30 seconds
20 seconds
10 seconds
~16 hours
![Page 5: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/5.jpg)
Outline
• Some Theory
• Practice & real world examples
• Tools & live demos
• Configuration best practices
• Discussion
5
![Page 6: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/6.jpg)
Some Theory
![Page 7: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/7.jpg)
Garbage Collection
7
![Page 8: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/8.jpg)
Garbage Collection
8
![Page 9: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/9.jpg)
Terminology
Garbage collection … is a form of automatic memory management.
Garbage … memory occupied by objects that are no longer used.
9
![Page 10: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/10.jpg)
Pros and Cons
Pros - Programmer does not need to worry about memory (de-)allocation
(leading to fewer memory leaks)
Cons - Performance overhead - Can lead to more complex programming language design
10
![Page 11: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/11.jpg)
More Terminology
Collector Heap Mutator Roots
11
![Page 12: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/12.jpg)
Roots
12
![Page 13: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/13.jpg)
Garbage Collection
Algorithms
13
Tracing Reference Counting
Collection Style Batch Incremental
Cost Per Mutation None High
Throughput High Low
Pause Times Long Short
Real Time? No Yes
Collects Cycles? Yes No
![Page 14: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/14.jpg)
Tracing algorithms
Mark & Sweep Copying
14
![Page 15: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/15.jpg)
Think of a bookshelf
15
![Page 16: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/16.jpg)
Tracing algorithms
Mark & Sweep Copying
16
![Page 17: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/17.jpg)
Mark & Sweep
Mark the books you want to keep
17
![Page 18: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/18.jpg)
Mark & Sweep
Throw away the books that you don’t want to keep
18
![Page 19: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/19.jpg)
Mark & Sweep
Problem: Fragmentation
19
This size book won’t fit!
![Page 20: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/20.jpg)
Tracing algorithms
Mark & Sweep Copying
20
![Page 21: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/21.jpg)
Copying
Need 2 shelves
21
![Page 22: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/22.jpg)
Copying
Move (“copy”) books you want to keep
22
![Page 23: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/23.jpg)
Copying
Throw away books you don’t want to keep
23
![Page 24: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/24.jpg)
Further readings
24
![Page 25: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/25.jpg)
Java
![Page 26: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/26.jpg)
HotSpot JVM Architecture
26
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
![Page 27: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/27.jpg)
Java
27
Metaspace (Java 8 and later)
(Java 7 and earlier)
![Page 28: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/28.jpg)
Java
Generational Garbage Collection
28
Hypothesis: Most objects die young
![Page 29: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/29.jpg)
Generational Garbage Collection
29
![Page 30: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/30.jpg)
Tools & Practice
![Page 31: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/31.jpg)
Garbage Collection
Tools (Memory Analyzer) Java VisualVM jClarity Censum Grafana Icinga
31
![Page 32: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/32.jpg)
A little bit of GC Tuning
![Page 33: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/33.jpg)
GC Tuning
Performance Triangle
33
Memory Footprint
Throughput Latency
M
T L
![Page 34: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/34.jpg)
GC Tuning
Better Performance Triangle
34
Compactness
Throughput Responsiveness
C
T R
C x T x R = a Optimization: Increase a
![Page 35: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/35.jpg)
Responsiveness vs. Throughput
35
![Page 36: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/36.jpg)
Collectors
Collectors (new generation) -XX:+UseSerialGC (Copy) -XX:+UseParNewGC (used together with old gen CMS) -XX:+UseG1GC (same for old gen)
36
![Page 37: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/37.jpg)
Collectors
Collectors (old generation) Throughput: -XX:+UseSerialGC (MarkSweepCompact) -XX:+UseParallelGC -XX:+UseParallelOldGC Low-pause: -XX:+UseConcMarkSweepGC -XX:+UseG1GC
37
![Page 38: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/38.jpg)
Concurrent Mark-Sweep
38
![Page 39: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/39.jpg)
Fun with JVM Options
39
![Page 40: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/40.jpg)
Fun with JVM Options
Most important -server Crucial for all long-running server applications. http://stackoverflow.com/questions/198577/real-differences-between-java-server-and-java-client
40
![Page 41: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/41.jpg)
Fun with JVM Options
Most important (cont’d) -Xms (-XX:InitialHeapSize) -Xmx (-XX:MaxHeapSize) Setting Xms = Xmx (slightly) saves some overhead.
41
![Page 42: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/42.jpg)
Fun with JVM Options
Enable GC logs -Xloggc:logs/gc-<app>.log -XX:+PrintGCCause -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=2 -XX:GCLogFileSize=128M
42
![Page 43: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/43.jpg)
Fun with JVM Options
Enable JMX remoting -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=<port> -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
43
![Page 44: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/44.jpg)
Think about your program
https://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html
44
![Page 45: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/45.jpg)
Best practices
![Page 46: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/46.jpg)
Best practices
“Good” JVM options to start with -server -Xms1g -Xmx1g -XX:+AlwaysPreTouch -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC
46
![Page 47: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/47.jpg)
Best practices
Notes on G1GC -XX:+UseG1GC http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html (G1GC shall become the default collector in Java 9)
47
![Page 48: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/48.jpg)
Best practices
“Good” JVM options to start with (G1GC) -server -Xms1g -Xmx1g -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:+DisableExplicitGC
48
![Page 49: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/49.jpg)
Best practices
Keep the heap size below 30 GB if possible. Why? Compressed oops. https://wiki.openjdk.java.net/display/HotSpot/CompressedOops http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html (enabled by default since Java 7 for 64-bit)
49
![Page 50: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/50.jpg)
Best practices
Look out for specific tuning guides / recommendations. https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html
50
![Page 51: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/51.jpg)
The End?
![Page 52: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/52.jpg)
The End?
Other things that can go wrong.
![Page 53: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/53.jpg)
Linux OOM Killer
53
System (3GB memory)
JVM (Xmx=2g)
/var/log/kern.log jvm.memory.total.used
![Page 54: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/54.jpg)
OOM
54
hs_err_pid<pid>.log
![Page 55: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/55.jpg)
Questions?
![Page 56: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/56.jpg)
Add-on slides
![Page 57: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/57.jpg)
Go
57
![Page 58: (JVM) Garbage Collection - Brown Bag Session](https://reader038.fdocuments.us/reader038/viewer/2022110107/58ab46701a28ab61758b573f/html5/thumbnails/58.jpg)
Java Profiling
58