Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight...
Transcript of Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight...
![Page 1: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/1.jpg)
1
Daniel Mitterdorfer@dmitterd
Java Flight RecorderThe Secret Arrow in Your Quiver
![Page 2: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/2.jpg)
2
Agenda
Java Flight Recorder: Why and What?1
Demos3
Summary 4
How do I use Java Flight Recorder? 2
![Page 3: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/3.jpg)
3
Why Java Flight Recorder?Memory: Looks fine...
![Page 4: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/4.jpg)
4
Why Java Flight Recorder?Memory: … but what’s happening here?
![Page 5: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/5.jpg)
5
Why Java Flight Recorder?Memory: Why is it happening?
![Page 6: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/6.jpg)
6
What is Java Flight Recorder?
• Low-overhead sampling profiler
• Originally part of JRockit
• In Oracle JDK since Java 7u40
![Page 7: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/7.jpg)
77
![Page 8: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/8.jpg)
8
Java Flight Recorder from 10.000 feet
Your appJIT
GC
Runtime
JFR
jcmd
start / stop
event ring bufferrecording.jfr
profile.jfc
jmc
view
![Page 9: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/9.jpg)
9
How do I use JFR?
![Page 10: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/10.jpg)
10
Enabling Flight Recorder
• Start jcmd $PID JFR.start
• Dump
jcmd $PID JFR.dump recording=1 filename=/tmp/rec.jfr
• Stop:
jcmd $PID JFR.stop recording=1
Attach to a running application
![Page 11: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/11.jpg)
11
Enabling Flight RecorderJVM flags (JDK 8 / 9)
-XX:+UnlockCommercialFeatures-XX:+FlightRecorder
![Page 12: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/12.jpg)
1212
OR*
* May change in the future: See https://twitter.com/hirt/status/905500198297894912
![Page 13: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/13.jpg)
13
Avoiding Safepoint BiasJVM flags (JDK 8 / 9)
-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints
![Page 14: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/14.jpg)
14
Safepoints?
![Page 15: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/15.jpg)
15
Safepoints: PurposeWhen the JVM needs to take control...
1. Halt all application threads (“safepoint”)
2. Do housekeeping tasks:‒Garbage Collection
‒Take Thread Dumps
‒Deoptimize code
‒….
3. Let application threads continue
![Page 16: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/16.jpg)
16
Safepoint Polling*
• JVM “arms” a page in memory (on Linux: mprotect)
• Application threads poll and raise SEGV if page is armed
* specific to JIT-compiled code in OpenJDK: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/file/tip/src/share/vm/runtime/safepoint.cpp
![Page 17: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/17.jpg)
17
Safepoint Polling: Problems
• Counted loops with int counters (considered “short”-running)
• Some I/O operations: e.g. writing mmapped buffers, System.arrayCopy()
Some operations defer safepoint polls
![Page 18: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/18.jpg)
18
JVMTI vs AsyncGetCallTraceJVM Tool Interface (JVMTI)
• “Official” interface for debuggers and profilers
• Captures stacks at safepoints
• Used by almost every profiler
![Page 19: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/19.jpg)
19
JVMTI vs AsyncGetCallTraceAsyncGetCallTrace
• Unofficial API
• Captures stacks at any time
• Used by Java Flight Recorder, Honest Profiler, Oracle Developer Studio
![Page 20: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/20.jpg)
20
main()
b()
c() c()
JvmtiEnv::GetAllStackTraces()
Safepoint Poll
JVMTI: Safepoint Bias
![Page 21: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/21.jpg)
21
main()
b()
c()
AsyncGetCallTrace()
AsyncGetCallTrace: No Safepoint Bias
![Page 22: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/22.jpg)
22
• Sampling profiler → sampling bias
• Sampling can fail:‒GC active‒Code is about to be deoptimized‒Top stack frame is not a Java frame‒...
AsyncGetCallTrace is not a silver bullet
![Page 23: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/23.jpg)
23
main()
b()
c()
AsyncGetCallTrace()
Sampling Biasc() is “invisible”
![Page 24: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/24.jpg)
24
Customized Recording SettingsEditing
![Page 25: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/25.jpg)
25
Customized Recording SettingsUsage
• Stored as *.jfc in ‒$JAVA_HOME/jre/lib/jfr/ (Java 8)‒$JAVA_HOME/lib/jfr/ (Java 9)
• To use memory.jfc:
-XX:StartFlightRecording=settings=memory
![Page 26: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/26.jpg)
26
Starting a Profiling Recording (Fixed Time)JVM flags (JDK 8 / 9)
-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints-XX:StartFlightRecording=delay=240s,duration=60s,settings=profile,filename=rec.jfr
![Page 27: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/27.jpg)
27
Starting a Continuous RecordingJVM flags (JDK 8)
-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints-XX:StartFlightRecording=defaultrecording=true
Not needed in JDK 9
![Page 28: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/28.jpg)
28
Low Overhead < 2%
Source: https://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-wp-2008279.pdf
![Page 29: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/29.jpg)
29
Dump a recording at application exitJVM flags (JDK 8)
-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints-XX:StartFlightRecording=defaultrecording=true-XX:FlightRecorderOptions=disk=true,maxage=0s,maxsize=0,dumponexit=true,dumponexitpath=/rec.jfr
![Page 30: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/30.jpg)
30
Dump a recording at application exitJVM flags (JDK 9)
-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints-XX:StartFlightRecording=disk=true,maxage=0s,maxsize=0, dumponexit=true,filename=/rec.jfr
![Page 31: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/31.jpg)
31
Enabling Flight RecorderFrom Mission Control
![Page 32: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/32.jpg)
32
Enough talking: Demos
![Page 33: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/33.jpg)
33
Elasticsearch Cluster
Example Application: ElasticsearchOpen Source Distributed Search Engine
Your Application
Node 1
Node 2
Node 3
HTTP
![Page 34: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/34.jpg)
34
Key Operations and Metrics
• Adding Documents to the Index: Throughput
• Querying: Latency
Example Application: Elasticsearch
![Page 35: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/35.jpg)
35
Dev Machine 2
My Usual Setup
Elasticsearch
JFR
Direct LAN Connection
Dev Machine 1
Load Test Driver
![Page 36: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/36.jpg)
36
Demo: Contention Profilingelastic/elasticsearch#18053
![Page 37: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/37.jpg)
37
Demo: Contention ProfilingLock Striping
docid #5
Striped Lock
Lock1
Lock2
Lockn
...
hash(5,n)
![Page 38: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/38.jpg)
38
![Page 39: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/39.jpg)
39
Demo: Contention ProfilingCollision Probability
![Page 40: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/40.jpg)
40 Source: https://elasticsearch-benchmarks.elastic.co/classic/
Throughput ComparisonDemo: Contention Profiling
![Page 41: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/41.jpg)
41
Demo: Allocation Profilingelastic/elasticsearch#23185
![Page 42: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/42.jpg)
42
Demo: Allocation ProfilingBackground:elastic/elasticsearch#23185
Source: https://elasticsearch-benchmarks.elastic.co/index.html#tracks/nyc-taxis/nightly/1y
![Page 43: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/43.jpg)
43
Demo: Allocation Profiling
Source: https://elasticsearch-benchmarks.elastic.co/index.html#tracks/nyc-taxis/nightly/1y
Young GC
Old GC
![Page 44: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/44.jpg)
44
Demo: Allocation ProfilingThread Local Allocation Buffers (TLABs) in the JVM
Eden space
TLABs...
Shared
![Page 45: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/45.jpg)
45
...
One HTTP Request
Many Buffers - One per read
Demo: Allocation ProfilingBuffers in Netty
![Page 46: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/46.jpg)
46
Demo: Allocation ProfilingProblem: MTU
• MTU Loopback: 65536 bytes
• MTU Ethernet: 1500 bytes
→ Lower internal buffer sizes
![Page 47: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/47.jpg)
47 Source: https://elasticsearch-benchmarks.elastic.co/index.html#tracks/nyc-taxis/nightly/1y
Demo: Allocation ProfilingThroughput Comparison
![Page 48: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/48.jpg)
48 Source: https://elasticsearch-benchmarks.elastic.co/index.html#tracks/nyc-taxis/nightly/1y
Demo: Allocation ProfilingGC Times Comparison
Young GC
Old GC
![Page 49: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/49.jpg)
49
Summary & Outlook
![Page 50: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/50.jpg)
50
JFR: A versatile tool
• Commercial extension of Oracle JDK
• Low overhead, customizable profiles
• Profiling and Continuous Mode
• Analyze various performance issues: CPU, Memory, Locking, ...
![Page 51: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/51.jpg)
51
JFR and JDK 9
• JDK 9 brings a new version of Mission Control
• Flight recording also produced on crashes (e.g. OOME)
• Adds supported APIs‒Create your own events
‒Parse flight recordings
• More events available
Source: https://www.jug.ch/events/slides/170215_SwissJUG2017_zurich_sneakpeek.pdf
![Page 52: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/52.jpg)
52
References and Further Reading
• AsyncGetCallTrace: http://psy-lob-saw.blogspot.de/2016/06/the-pros-and-cons-of-agct.html
• Safepoints and Safepoint Bias‒http://psy-lob-saw.blogspot.de/2015/12/safepoints.html
‒http://psy-lob-saw.blogspot.de/2016/02/why-most-sampling-java-profilers-are.html
• Flight Recorder Docs: https://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/
• Generally recommended: http://hirt.se/
![Page 54: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/54.jpg)
54
Image Credits
• So klein und schon ein flight recorder by Uwe Hauck (used with written permission of the author)
• Nasa Social February 2017 by Nasa Johnson (license: CC BY-NC-ND 2.0)
• Tyler Greene Dodges Eric Young by Paul Martinez (license: CC BY-NC-ND 2.0)
• IMG_2857 by John M (license: CC BY-NC-ND 2.0)
• Greed by las - initially (license: CC BY-NC-ND 2.0)
• IMG_9861 by 7263255 (license: CC BY-SA 2.0)
• 2014 Bahrain GP - FP3 & Qualifying by CaterhamF1 (license: CC BY-NC-ND 2.0)
![Page 55: Java Flight Recorderdaniel.mitterdorfer.name/talks/2017/JVM-Con - Java... · 6 What is Java Flight Recorder? •Low-overhead sampling profiler •Originally part of JRockit •In](https://reader033.fdocuments.in/reader033/viewer/2022060518/604b12facbc8c2505d747bcc/html5/thumbnails/55.jpg)
5555