tools/java/thread dump analyzer
// javanew

thread dump analyzer

parse jstack output — thread states, deadlocks, blocking chains

  // browser
analysis appears here

// about this tool

A Java thread dump is a snapshot of all thread states in a JVM process at a given moment, produced by jstack, kill -3, or JConsole. It captures each thread's name, OS thread ID, Java state (RUNNABLE, BLOCKED, WAITING, TIMED_WAITING), full stack trace, and any monitor locks it holds or waits for. This tool parses raw jstack output into a structured view with state summaries, deadlock detection, and blocking chain analysis.

// when to use

  • Diagnose a deadlocked production JVM by identifying the circular lock dependency between threads
  • Find threads stuck in BLOCKED state to locate contention bottlenecks around synchronized blocks
  • Identify CPU-consuming threads by correlating RUNNABLE threads with top -H output
  • Compare thread counts before and after a load spike to detect thread pool saturation or leaks

// faq

How do I generate a thread dump?
Run jstack <pid> in a terminal, or press Ctrl+Break on Windows JVMs. In containers, use kubectl exec <pod> -- jstack 1. You can also trigger a dump via JMX, VisualVM, or by sending SIGQUIT to the Java process.
What is the difference between BLOCKED and WAITING?
BLOCKED means a thread is waiting to acquire a monitor lock (synchronized block) currently held by another thread. WAITING or TIMED_WAITING means a thread is voluntarily suspended via Object.wait(), Thread.sleep(), or LockSupport.park() — it is not competing for a lock.
Can I detect deadlocks?
Yes. The analyzer identifies deadlock cycles automatically — threads that each hold a lock the other needs. The raw jstack output also includes a "Found one Java-level deadlock" section when a deadlock is present.
// history
Pro Cloud Sync — upgrade
no operations yet