JVM tool guide · profiling

JDK Mission Control (JMC): Analyze JFR Recordings & Live JVMs

JDK Mission Control (JMC) is the rich analysis client for Java Flight Recorder data. It opens .jfr recordings and shows flame graphs, allocation and lock profiles, GC pause timelines, and exception/latency breakdowns — turning raw JFR events into a decision-ready view.

JMC also connects to live JVMs via JMX and has long been the standard way to make sense of the 'black box' JFR produces in production.

Official JDK Mission Control (JMC) project

Use it when

• You have a .jfr recording (from jcmd JFR.start or -XX:StartFlightRecording) and need to analyze it.

• You want flame graphs, GC pause views, and lock/allocation analysis on JFR data.

• You need to inspect a live JVM via JMX with charts and triggers.

Skip it when

• You haven't got an agent-free quick look — VisualVM connects with fewer moving parts if all you need is a monitor.

• You need Java-stack sampling only for a release investigation — async-profiler might fit better.

Open a recording

Launch JMC and open a .jfr file; the automated analysis gives a prioritized list of findings (e.g., long GC pauses, lock contention) plus manual views.

# Launch JMC (bundled with Oracle JDK or from the openjdk/jmc releases)
jmc

Flame view

The Flame View renders the sampled stack top-down so you can see where CPU or allocations concentrate across the whole recording.

GC pause view

The Garbage Collection view plots pause duration and heap used over time — quickly spot stop-the-world spikes and their cause (young vs old GC, concurrent phases).

Lock & exceptions

JFR's latency/lock events are surfaced as contention and object-wait analysis plus exception breakdowns, helping you find blocked threads and hot exceptions.

Trend across recordings

JMC has an automated analysis report that compares findings; use it as the first read of any new recording.

Quick start

Get productive in minutes

Record then analyze

Capture a JFR file from a live JVM and open it in JMC.

jcmd <pid> JFR.start duration=60s filename=/tmp/app.jfr
jmc /tmp/app.jfr

Frequently asked questions

Is JMC free?

Yes. The openjdk/jmc project is open source and the Oracle JDK ships it; standalone builds are available from the project's GitHub releases for any JDK.

JMC without JFR?

JMC has JMX connection features too, but its headline value is JFR analysis. If you have no JFR recording, start one with jcmd JFR.start.

Last updated August 2026 · JVM Tools is independent and not affiliated with Oracle.