JVM tool guide · profiling

VisualVM: All-in-One Monitoring, Thread & Heap Analysis

VisualVM is a visual tool that bundles many JDK diagnostics into one GUI: live heap and GC charts, CPU/memory sampling, thread and heap dump viewing, and JFR/GC-log analysis. It historically shipped with the JDK and remains popular because it needs no agent and covers the common diagnostics in one window.

Since JDK 9 the JDK no longer bundles VisualVM, but the standalone build (from visualvm.github.io) is free and connects to local and remote JVMs over the attach mechanism or JMX.

Official VisualVM project

Use it when

• You want a zero-agent GUI that monitors local JVMs and opens thread/heap dumps.

• You want quick CPU or memory sampling without installing another profiler.

• You're exploring a heap dump or thread dump quickly before going deep in MAT.

Skip it when

• You need deep production CPU profiles with native stacks — prefer async-profiler.

• You need fine-grained memory-leak dominators — Eclipse MAT is stronger.

Launch and attach

Install from the website, then launch. The 'Local' tree lists attachable JVMs on the same machine; 'Remote' nodes connect via jstatd or JMX.

# Start VisualVM (from the unpacked directory)
./bin/visualvm

Monitor overview charts

The Monitor tab shows live heap, metaspace, classes, and thread counts, plus CPU usage. This is the fastest 'is my JVM healthy' view.

Take a thread dump

Right-click a process and choose Thread Dump; VisualVM opens it in a tree with expandable stack frames. Save as .txt for sharing.

Take / open a heap dump

Right-click -> Heap Dump captures a .hprof and opens it: browse instances, run a basic leak-suspect scan, and query with the built-in OQL console.

Sampling vs profiling tab

The Profiler tab lets you start CPU or Memory sampling on a live process, then shows hot methods / allocation counts per class.

Quick start

Get productive in minutes

Monitor + a thread dump in a minute

Launch, attach, and grab a dump.

./bin/visualvm
# File > Add JMX Connection or click a process under Local

Frequently asked questions

Is VisualVM still maintained?

Yes — the open-source project releases regularly from visualvm.github.io. It is the community-maintained successor to the JDK-bundled tool and works with current JDKs.

VisualVM vs JMC vs async-profiler?

VisualVM = quick all-in-one monitoring + dump viewing. JMC = deep analysis of JFR recordings and live processes. async-profiler = raw sampling flame graphs. They overlap but each has a strength; many teams keep VisualVM for day-to-day and JMC for JFR.

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