Usamos cookies essenciais para login e armazenamento local para suas preferências. Para métricas de uso, usamos o Google Analytics 4 — você pode recusar sem perder nada do produto. Saber mais

ThreadMineThreadMine
Back

Playground · dump comparison

Before and after a real fix: see the delta

A Java service with a deadlock and an exhausted connection pool — and the same service after the fix. Compare both dumps side by side, no login.

Create free account
BrokenHealthy
28
Before · deadlock · exhausted pool
+61
Δ health score
88
After · bounded pool · no blocking

Real data: two dumps of the same service, diff computed by the product’s own engine.

Diagnosis of the change

Score rose 64 points.

✓ POOL_EXAURIDO resolved (5 threads)🔥 http-nio-8080-exec-1 -7.0s CPU

The delta in detail

Top offenders

Freed CPU in B

Used more in B

Counters

Total
10100
Runnable
15+4
Blocked
50-5
Waiting
30-3
TimedWaiting
15+4
Daemon
000
HealthScore
2892+64

Thread-by-thread diff

ms
Thread diff between analyses A and B
CategoryState A → BFlags
http-nio-8080-exec-1CHANGEDBLOCKED RUNNABLE-7000ms
http-nio-8080-exec-3CHANGEDBLOCKED RUNNABLE-7000ms
http-nio-8080-exec-2CHANGEDBLOCKED TIMED_WAITING-6700ms
http-nio-8080-exec-4CHANGEDWAITING TIMED_WAITING-4600ms
http-nio-8080-exec-5CHANGEDWAITING TIMED_WAITING-4340ms
estoque-tx-workerCHANGEDBLOCKED RUNNABLE20ms
pedido-tx-workerCHANGEDBLOCKED RUNNABLE20ms
mainCHANGEDRUNNABLE RUNNABLE10ms
HikariPool-1 connection adderCHANGEDWAITING TIMED_WAITING5ms
scheduling-1CHANGEDTIMED_WAITING TIMED_WAITING5ms

This page is a live, no-login demo of the rarest feature in a thread-dump analyzer: before/after comparison of an applied fix. The block above already tells the story — a Java service that was at health score 28 and, after a fix, went to 92. Below you explore the full diff that produced that number.

The scenario: exhausted pool + deadlock

The dump pair comes from a typical pedido-service on Spring Boot with Tomcat and HikariCP. In the before dump the service is stuck on two problems at once:

  • Connection pool exhaustion. All five http-nio-8080-exec-* threads are BLOCKED/WAITING inside HikariPool.getConnection, parked past the connectionTimeout — piling up thousands of ms of CPU without making progress.
  • Deadlock. pedido-tx-worker and estoque-tx-worker entered a circular wait on two monitors acquired in reversed order (CRITICAL).

In the after dump — same service, after bounding the pool and enforcing a global lock order — both problems disappear: the pool threads go back to RUNNABLE/TIMED_WAITING and the deadlock is gone. Nothing new shows up. That is the signature of a fix that landed.

How to read the delta

The read goes top to bottom, from summary to detail:

  • Health score. 28 → 92. The single number that answers "better or worse?" before you read a single stack.
  • Diagnosis. The green verdict and its drivers ("problem resolved") summarize, in one line, what pushed the score up.
  • Counters and problems. BLOCKED 5 → 0, the CRITICAL problems that vanished, and the threads that released the most CPU.
  • Thread-by-thread diff. Each paired thread, with its state transition (e.g. BLOCKED → RUNNABLE) and CPU delta. Filter by category, by state change, or by CPU released.

Why compare two dumps

A single dump answers "what is happening now?". Comparing two answers the question that actually matters after a change: "what changed?". That is what you want when validating a hotfix in production, investigating a regression between two deploys, or figuring out why latency rose between the 2pm and 3pm peaks. Reading two large dumps in parallel by hand is slow and error-prone; the diff shows only the delta.

How ThreadMine compares

ThreadMine pairs the threads of the two dumps by name and computes, for each one, changes in state, in locks (waited/held), in CPU and in stack (via a hash of the top frames). It aggregates counters by state, cross-references detected problems (what appeared in B, what disappeared from A, what changed severity) and derives a verdict with the main drivers of the change. On AI plans, Vein also writes an opinion on the likely cause of the difference.

The diff in this demo was computed by that exact same engine — the difference is that here the two dumps are a fixed example, served statically. With a free account you do the same with yours.

Frequently asked questions

What does comparing two thread dumps mean?

It means taking a dump from before a change (a fix, a deploy, a load spike) and one from after, then cross-referencing thread by thread: which ones changed state, which appeared or disappeared, how much CPU each now consumes, and which problems (deadlock, exhausted pool, contention) appeared or were resolved. Instead of reading two 900-line dumps in parallel, you see only what changed — plus a health score on each side that tells you, in one number, whether things got better or worse.

How do I know a fix actually resolved the problem?

By comparing the before dump with the after one. In the example on this page the service was at health score 28 (a CRITICAL deadlock plus an exhausted HikariCP pool, with five http-nio threads blocked waiting for a connection) and, after bounding the pool and enforcing a global lock order, it climbed to 92: no blocking problems left, the pool threads released thousands of milliseconds of CPU and went back to RUNNABLE/TIMED_WAITING. The +64 health-score delta and the list of resolved problems are the objective evidence the fix landed.

Do I need an account to compare dumps?

This demo is public and requires no login — it is a fixed pair of sample dumps. To compare YOUR own dumps (with per-thread stack diff and the Vein AI diagnosis of the change) you do need a free account: you upload both dumps and ThreadMine computes the full diff.

Is dump comparison a paid feature?

Traditional tools hide comparison behind an Enterprise plan. In ThreadMine the side-by-side comparison is available on the free plan already; what the paid plans add is the AI layer (Vein) explaining the cause of the change and the workspace comparison history.

Compare your own dumps

Upload your before and after dumps. ThreadMine shows what changed — state, locks, CPU and problems — in seconds.