---
title: Java Runtime Metrics (OpenTelemetry)
description: Collect runtime metrics from your Java applications via OpenTelemetry.
breadcrumbs: Docs > Integrations > Java Runtime Metrics (OpenTelemetry)
---

# Java Runtime Metrics (OpenTelemetry)

{% callout %}
# Important note for users on the following Datadog sites: us2.ddog-gov.com

{% alert level="info" %}
To find out if this integration is available in your organization, see your [Datadog Integrations](https://app.datadoghq.com/integrations) page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email [support@ddog-gov.com](mailto:support@ddog-gov.com).
{% /alert %}

{% /callout %}

## Overview{% #overview %}

The Java OpenTelemetry integration allows you to collect runtime metrics from your Java applications instrumented with OpenTelemetry.

## Setup{% #setup %}

See the dedicated documentation for [Java Runtime Metrics via OpenTelemetry](https://docs.datadoghq.com/opentelemetry/integrations/runtime_metrics.md?tab=java).

### Recommended Collector Processors{% #recommended-collector-processors %}

The following metrics are emitted as cumulative counters by the OpenTelemetry Java SDK / agent. To convert them to per-second rates in Datadog, apply the [Delta To Rate processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/deltatorateprocessor) in your OpenTelemetry Collector pipeline:

- `jvm.cpu.time`
- `jvm.class.loaded`
- `jvm.class.unloaded`

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **jvm.memory.used**(gauge)                  | Measure of memory used*Shown as byte*                                                             |
| **jvm.memory.committed**(gauge)             | Measure of memory committed*Shown as byte*                                                        |
| **jvm.memory.limit**(gauge)                 | Measure of max obtainable memory*Shown as byte*                                                   |
| **jvm.memory.init**(gauge)                  | Measure of initial memory requested*Shown as byte*                                                |
| **jvm.memory.used\_after\_last\_gc**(gauge) | Measure of memory used after the most recent garbage collection event on this pool*Shown as byte* |
| **jvm.gc.duration**(gauge)                  | Duration of JVM garbage collection actions*Shown as second*                                       |
| **jvm.thread.count**(gauge)                 | Number of executing platform threads*Shown as thread*                                             |
| **jvm.class.loaded**(count)                 | Number of classes loaded since JVM start                                                          |
| **jvm.class.unloaded**(count)               | Number of classes unloaded since JVM start                                                        |
| **jvm.class.count**(gauge)                  | Number of classes currently loaded                                                                |
| **jvm.cpu.time**(count)                     | CPU time used by the process*Shown as second*                                                     |
| **jvm.cpu.count**(gauge)                    | Number of processors available to the JVM*Shown as cpu*                                           |
| **jvm.cpu.recent\_utilization**(gauge)      | Recent CPU utilization for the process*Shown as fraction*                                         |
| **jvm.system.cpu.utilization**(gauge)       | Recent CPU utilization for the whole system*Shown as fraction*                                    |
| **jvm.system.cpu.load\_1m**(gauge)          | Average CPU load of the whole system for the last minute*Shown as fraction*                       |
| **jvm.buffer.memory.used**(gauge)           | Measure of memory used by buffers*Shown as byte*                                                  |
| **jvm.buffer.memory.limit**(gauge)          | Measure of total memory capacity of buffers*Shown as byte*                                        |
| **jvm.buffer.count**(gauge)                 | Number of buffers in the pool*Shown as buffer*                                                    |
| **jvm.file\_descriptor.count**(gauge)       | Number of open file descriptors*Shown as file*                                                    |
| **jvm.file\_descriptor.limit**(gauge)       | Maximum number of open file descriptors allowed*Shown as file*                                    |

## Support{% #support %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
