---
title: "JVM thread dump"
method: GET
path: "/api/v1/maintenance/_threads"
tags: ["Maintenance"]
---

# JVM thread dump

`GET /api/v1/maintenance/_threads`

## Request

- Base URL: `https://docs.anzworldline-solutions.com.au`
- URL: `https://docs.anzworldline-solutions.com.au/api/v1/maintenance/_threads`
- Auth: none declared
- TypeScript: <https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/docs/api/v1/maintenance/_threads/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a full JVM thread dump as structured JSON, including state, priority, stack traces, locked monitors/synchronizers, and deadlock detection. Use hideSystem=true (default) to filter to dotCMS threads only.

## Query parameters

- `hideSystem` boolean

## Response `200`

Thread dump captured

- ResponseEntityThreadDumpView
  - `errors` ErrorEntity[]
    - `errorCode` string
    - `message` string
    - `fieldName` string
  - `entity` ThreadDumpView
    - `serverId` string, required: Identifier of the cluster node that produced this dump
    - `serverName` string: Human-readable name of the cluster node, when configured
    - `timestamp` string, required: Wall-clock timestamp when the dump was captured
    - `vmInfo` string, required: JVM identification: vm name and runtime version
    - `threadCount` integer, required: Number of threads included in the response (after filtering)
    - `deadlockedCount` integer, required: Total number of deadlocked threads detected JVM-wide
    - `threads` ThreadDescriptorView[], required: Per-thread descriptors
      - `name` string, required: Thread name
      - `id` integer, required: JVM-assigned thread id
      - `daemon` boolean, required: Whether this is a daemon thread
      - `priority` integer, required: Thread priority (1-10)
      - `state` string, required: Thread state name (e.g. RUNNABLE, WAITING, TIMED_WAITING, BLOCKED)
      - `deadlocked` boolean, required: Whether this thread is part of a detected deadlock cycle
      - `stackTrace` string[], required: Stack trace as a list of formatted frames
      - `lockedMonitors` string[], required: Locked monitors held by this thread, formatted as 'ClassName at depth N'
      - `lockedSynchronizers` string[], required: Locked ownable synchronizers held by this thread (LockInfo.toString())
      - `lockInfo` string: String form of the lock the thread is currently waiting on; null if none
      - `lockOwnerName` string: Name of the thread that owns the lock this thread is waiting on; null if none
      - `lockOwnerId` integer: Id of the thread that owns the lock this thread is waiting on; null if none
  - `messages` MessageEntity[]
    - `message` string
  - `i18nMessagesMap` object
  - `permissions` string[]
  - `pagination` Pagination
    - `currentPage` integer
    - `perPage` integer
    - `totalEntries` integer

## Other responses

- `401`: Unauthorized - authentication required
- `403`: Forbidden - CMS Administrator role required

## Changes

- **2026-10-30** `4fd8e917d458`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/changes/api/v1/maintenance/_threads/get.md)

---

[API](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api.md) - [All operations](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/revisions/4fd8e917d458?raw)
