Skip to content

JVM threads view

Centre-region detailed-thread inspector of the Monitoring perspective. Sibling of the JVM monitoring dashboard.

What it shows

For every live thread the JVM reports through ThreadMXBean:

ColumnSource
IdThreadInfo.getThreadId()
NameThreadInfo.getThreadName()
StateThreadInfo.getThreadState() - NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED.
DaemonThread.isDaemon()
PriorityThread.getPriority()
CPU timeThreadMXBean.getThreadCpuTime(id) when CPU-time sampling is supported and enabled. -1 otherwise.
User timeThreadMXBean.getThreadUserTime(id) - same caveat.
Lock nameThreadInfo.getLockName() - the monitor the thread is parked on, if any.
Lock owner nameThreadInfo.getLockOwnerName() - the thread holding that monitor.
Lock owner idThreadInfo.getLockOwnerId().

The list is filterable (state, name pattern, daemon-only) and sortable on every column. A refresh-interval dropdown in the toolbar controls polling.

Data source

Polls GET /services/ide/monitoring/threads. Returns the full ThreadDetail[] straight from MonitoringService.threads(). Same role gate as the rest of the Monitoring backend.

Configuration

  • View id: jvm-threads
  • Region: center
  • Label: Threads
  • lazyLoad: true, autoFocusTab: false

Diagnostic patterns

  • A BLOCKED thread whose lockOwnerName always points to the same other thread - classic monitor contention. Pin both threads' ids and read their stack traces from the platform's log on the next dump.
  • A WAITING thread on a known internal lock name - typically a synchronizer or a Quartz worker; safe.
  • CPU time growing faster than user time for a RUNNABLE thread - kernel time, often I/O. Pair with the Logs view to confirm.
  • Many daemon=true Camel (camel-1) thread #.. entries - the Camel context is healthy; spike count tracks active routes.

Notes

  • The view does not include stack traces. For full thread dumps use the JVM's own tooling (jcmd <pid> Thread.print) or the Operations perspective.
  • If ThreadMXBean.isThreadCpuTimeSupported() returns false on the platform JVM, CPU-time / user-time columns show -1 for every row. This is an MXBean limitation, not a Dirigible setting.

Released under the EPL-2.0 License.