Under the Hood of a JVM Application - Java Flight Recorder / Java Mission Control
summary
Demonstrates using Java Flight Recorder (JFR) and Java Mission Control to diagnose JVM-level bottlenecks in a git-hash demo that reads ~650,000 files (~20 GB) with virtual threads. Shows how to start and inspect JFR recordings via JVM args, jcmd or the programmatic API (and mentions JFR event streaming), discovers a synchronized lock, a tiny 512‑byte read buffer, and a Files API exception hotspot, and reports incremental fixes that raise throughput from 36k → 54k → 110k → 177k files/s (5.6 GB/s) with measured runtime overhead around 1% (3% with profiling).
AI-written summary · about
chapters (22)
- 0:00Introduction
- 1:44Observability limits of classic tools
- 2:46Java Flight Recorder and Mission Control
- 4:53Start a JFR recording
- 8:23Demo app overview
- 11:33First run and initial analysis
- 13:01Open JFR file
- 14:04Lock contention analysis
- 15:53Optimize after lock fix
- 16:35Second run and new findings
- 17:17File read operations analysis
- 18:44Optimize buffer size
- 20:30Third run and performance gains
- 21:12Exception analysis
- 22:18Fix JDK performance bug
- 24:23Fourth run with JDK patch
- 25:07Final observations and optimizations
- 26:11Performance gains and best practices
- 27:33When to use JFR and Mission Control
- 32:31Conclusion and recommendations
- 36:43Resources for further reading
- 38:14Q&A
related talks
49mUnder the Hood of a JVM Application - Java Flight Recorder/Java Mission Control
31mJava Mission Control: To Infinity and Beyond…
51mThe Power of JDK Flight Recorder: Efficient Profiling and Troubleshooting for Java Applications
45mAnalyzing Safe Flights, and Firey Wrecks with JDK Flight Recorder
39mProgrammer's Guide to JDK Flight Recorder
42mContinuous Monitoring with JDK Flight Recorder
42mProfiling and monitoring with the JDK
56mTaking Off With #JDK #FlightRecorder
