groups:
  - id: registry.jvm
    type: attribute_group
    display_name: Java Virtual Machine (JVM) Attributes
    brief: >
      This document defines Java Virtual machine related attributes.
    attributes:
      - id: jvm.gc.action
        stability: stable
        type: string
        brief: Name of the garbage collector action.
        examples: ["end of minor GC", "end of major GC"]
        note: >
          Garbage collector action is generally obtained via
          [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).
      - id: jvm.gc.cause
        stability: development
        type: string
        brief: Name of the garbage collector cause.
        examples: [ "System.gc()", "Allocation Failure" ]
        note: >
          Garbage collector cause is generally obtained via
          [GarbageCollectionNotificationInfo#getGcCause()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcCause()).
      - id: jvm.gc.name
        stability: stable
        type: string
        brief: Name of the garbage collector.
        examples: ["G1 Young Generation", "G1 Old Generation"]
        note: >
          Garbage collector name is generally obtained via
          [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).
      - id: jvm.memory.type
        stability: stable
        type:
          members:
            - id: heap
              value: 'heap'
              brief: 'Heap memory.'
              stability: stable
            - id: non_heap
              value: 'non_heap'
              brief: 'Non-heap memory'
              stability: stable
        brief: The type of memory.
        examples: ["heap", "non_heap"]
      - id: jvm.memory.pool.name
        stability: stable
        type: string
        brief: Name of the memory pool.
        examples: ["G1 Old Gen", "G1 Eden space", "G1 Survivor Space"]
        note: >
          Pool names are generally obtained via
          [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).
      - id: jvm.thread.daemon
        stability: stable
        type: boolean
        brief: "Whether the thread is daemon or not."
      - id: jvm.thread.state
        stability: stable
        brief: "State of the thread."
        examples: ["runnable", "blocked"]
        type:
          members:
            - id: new
              value: 'new'
              brief: 'A thread that has not yet started is in this state.'
              stability: stable
            - id: runnable
              value: 'runnable'
              brief: 'A thread executing in the Java virtual machine is in this state.'
              stability: stable
            - id: blocked
              value: 'blocked'
              brief: 'A thread that is blocked waiting for a monitor lock is in this state.'
              stability: stable
            - id: waiting
              value: 'waiting'
              brief: 'A thread that is waiting indefinitely for another thread to perform a particular action is in this state.'
              stability: stable
            - id: timed_waiting
              value: 'timed_waiting'
              brief: 'A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.'
              stability: stable
            - id: terminated
              value: 'terminated'
              brief: 'A thread that has exited is in this state.'
              stability: stable
      - id: jvm.buffer.pool.name
        type: string
        stability: development
        brief: Name of the buffer pool.
        examples: [ "mapped", "direct" ]
        note: >
          Pool names are generally obtained via
          [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).
