JVM
Java Virtual Machine (JVM) Attributes
This document defines Java Virtual machine related attributes.
Attributes:
| Key | Stability | Value Type | Description | Example Values |
|---|---|---|---|---|
jvm.buffer.pool.name | string | Name of the buffer pool. [1] | mapped; direct | |
jvm.executor.name | string | Name of the executor. [2] | pool-1-thread-*; ForkJoinPool.commonPool-worker-*; orders-vt-* | |
jvm.executor.owner.name | string | Name of the logical component that owns the executor. [3] | tomcat; jetty; netty | |
jvm.executor.thread.state | string | State of an executor thread. | active; idle (see more) | |
jvm.executor.type | string | The fully qualified class name of the executor implementation. | java.util.concurrent.ThreadPoolExecutor; java.util.concurrent.ForkJoinPool | |
jvm.gc.action | string | Name of the garbage collector action. [4] | end of minor GC; end of major GC | |
jvm.gc.cause | string | Name of the garbage collector cause. [5] | System.gc(); Allocation Failure | |
jvm.gc.name | string | Name of the garbage collector. [6] | G1 Young Generation; G1 Old Generation | |
jvm.memory.pool.name | string | Name of the memory pool. [7] | G1 Old Gen; G1 Eden space; G1 Survivor Space | |
jvm.memory.type | string | The type of memory. | heap; non_heap (see more) | |
jvm.thread.daemon | boolean | Whether the thread is daemon or not. | ||
jvm.thread.state | string | State of the thread. | runnable; blocked (see more) |
[1] jvm.buffer.pool.name: Pool names are generally obtained via BufferPoolMXBean#getName().
[2] jvm.executor.name: The executor name SHOULD be low-cardinality. If jvm.executor.owner.name is present, the combination of jvm.executor.owner.name and jvm.executor.name SHOULD be unique within the instrumented application; otherwise, jvm.executor.name SHOULD be unique when an executor-specific name is available. If the executor implementation does not provide an explicit name, instrumentation SHOULD derive a name from available implementation-specific metadata, such as a normalized worker thread name. If no executor-specific name or metadata is available, instrumentation MAY use unknown. The unknown value does not identify an executor, and metrics from multiple executors using this value MAY be aggregated. Users requiring per-executor metric series SHOULD configure a distinct name through the executor’s ThreadFactory. Instrumentations SHOULD document how the name is derived and how users can configure it. Once metric series registration for an executor has started, jvm.executor.name and jvm.executor.owner.name MUST remain stable for the lifetime of that registration. Instrumentations SHOULD determine these attributes before the first worker is registered. Instrumentations MUST NOT re-register cumulative metrics under a new attribute set or replay prior cumulative values under new attributes.
[3] jvm.executor.owner.name: The executor owner name SHOULD be a low-cardinality identifier for the component that creates and configures the executor. It is neither the executor implementation type nor an OpenTelemetry instrumentation scope.
[4] jvm.gc.action: Garbage collector action is generally obtained via GarbageCollectionNotificationInfo#getGcAction().
[5] jvm.gc.cause: Garbage collector cause is generally obtained via GarbageCollectionNotificationInfo#getGcCause().
[6] jvm.gc.name: Garbage collector name is generally obtained via GarbageCollectionNotificationInfo#getGcName().
[7] jvm.memory.pool.name: Pool names are generally obtained via MemoryPoolMXBean#getName().
jvm.executor.thread.state has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
active | The thread is currently executing a task. | |
idle | The thread currently exists but is not executing a task. |
jvm.memory.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
heap | Heap memory. | |
non_heap | Non-heap memory |
jvm.thread.state has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
blocked | A thread that is blocked waiting for a monitor lock is in this state. | |
new | A thread that has not yet started is in this state. | |
runnable | A thread executing in the Java virtual machine is in this state. | |
terminated | A thread that has exited is in this state. | |
timed_waiting | A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. | |
waiting | A thread that is waiting indefinitely for another thread to perform a particular action is in this state. |
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!