Debugging JVM performance issues
summary
Step-by-step triage shows concrete actions: capture jmap heap dumps and analyze with Eclipse MAT, sample threads with jstack every 30s to spot a busy thread, and inspect live with VisualVM and Java Flight Recorder / Mission Control. Reproduced cases include 500 million small objects triggering frequent minor GCs (minor up to ~5s, major rising to ~43s) and a 32M-char string that requires ~128MB vs Xmx=64MB causing OOME. An open-source diagnostics library (jWiki) collects targeted dumps and will auto-trigger captures on thresholds.
AI-written summary · about
chapters (9)
- 0:00JVM performance debugging intro
- 2:22JVM memory and GC recap
- 11:59High CPU in Java apps
- 16:00High GC activity scenarios
- 19:52Diagnosing memory usage issues
- 29:13Investigating app crashes
- 33:05Performance issue triage
- 36:53Current work and future plans
- 39:22Q&A
related talks
51mThe Diabolical Developer's Guide to Perfomance Tuning
38mFinding a needle in the haystack - Debugging performance issues
45mFast and Safe Production Monitoring of JVM Applications with BPF Magic
12mUsing Dynatrace and Kibana to Identify Bad Queries and Optimise Them
43mGC Tuning Confessions Of A Performance Engineer
52mMemory footprint of a Java process
47mHunting issues in a Java app with 31G heap and 500G off-heap: an Apache Ignite case study
01h 02mProfiling with Heaptrack and Hotspot on Embedded Linux
