Internals
Architecture Overview
How events travel from your JVM through the agent, the wait-for graph and the detector to the CLI and API.
The pipeline
- The agent loads inside the target JVM (
VirtualDeadlockAgent). - JVMTI, JFR and a thread-state poller produce lock and thread events.
EventSendersends each event to the in-processGraphGatewayand to the backend.- The gateway updates a
WaitForGraphand runsDeadlockDetector. - Cycles are pushed to
/api/internal/deadlocks; the CLI and REST API read them.
See the interactive diagram on the Architecture page.
Two destinations per event
Every event goes to the local gateway, so detection happens immediately inside the target JVM, and fire-and-forget over HTTP to the backend, which persists telemetry for the shell. A network failure never breaks the instrumented application.
Source modules
| Package | Role |
|---|---|
LockDetectionAgent/ | -javaagent: JVMTI bridge, JFR listener, poller, event sender |
graph/ | Registries, WaitForGraph, detectors, report generator |
backend/ | REST controllers, services, persistence, API-key security |
cli/ | Spring Shell commands and the dixy detect runner |
native/ | C++ JVMTI agent |