Java Thread Dump Analyzer
Free · Browser onlyTurn a wall of JVM stacks into a diagnosis. Find deadlocks, blocked threads, contended monitors, repeated pool stacks, common frames, and virtual-thread activity without uploading the dump.
Paste or open a thread dump
HotSpot/OpenJDK text, multiple concatenated captures, or modern JDK JSON · up to 20 MB
Analysis summary
What deserves attention
Thread distribution
By state
By role
Common stack frames
Across distinct threadsCapture comparison
| Capture | Threads | Runnable | Blocked | Waiting | Timed waiting | Deadlocks |
|---|
From capture to diagnosis
Capture useful lock data
For platform threads, use jcmd <pid> Thread.print -l or jstack -l <pid>. The lock option adds ownable synchronizers, improving waiter-to-owner analysis.
Compare several moments
For hangs or suspected CPU loops, capture multiple dumps several seconds apart and paste them together. A thread that stays RUNNABLE at the same frame across captures deserves closer investigation.
Modern virtual-thread dumps
JSON output from jcmd <pid> Thread.dump_to_file -format=json file.json preserves thread containers and scales better for large virtual-thread workloads.
What the Java thread states tell you
BLOCKED means a thread is waiting to enter synchronized code. WAITING and TIMED_WAITING commonly describe parked pool workers, sleeps, joins, or condition waits. RUNNABLE is broader than “using CPU”: it can include native work and some I/O. The analyzer keeps these states separate and connects monitor waiters to identifiable lock owners.
Supported thread-dump sources
Use traditional HotSpot or OpenJDK output from jstack, jcmd Thread.print, a kill -3 capture, or several captures concatenated into one file. Modern Thread.dump_to_file -format=json output is also supported for container and virtual-thread inspection.
New to the evidence? Read how to read a Java thread dump and trace a deadlock. Investigating a wider JVM incident? Use the X.509 certificate inspector for TLS material or the DDL schema explorer when a database call in the stack needs context.
This is static evidence analysis, not a profiler. Confirm suspicious patterns with repeated captures, JFR, application metrics, or a profiler.