Todos los productos
Search
Centro de documentos

Application Real-Time Monitoring Service:JVM metrics

Última actualización: Sep 12, 2026

El agente de ARMS recopila métricas de la JVM en cinco categorías: memoria, recolección de basura (GC), hilos, clases y descriptores de archivo. Todas las métricas se obtienen de forma periódica mediante las interfaces de administración estándar del JDK (java.lang.management).

En las siguientes secciones se detalla el método de recopilación, el nombre reportado, el tipo, la unidad, las dimensiones y la API de JDK subyacente para cada métrica.

Métricas de memoria

El agente de ARMS llama periódicamente a ManagementFactory.getPlatformMXBeans(MemoryPoolMXBean.class) para obtener el uso de memoria de cada pool de memoria de la JVM.

Cada MemoryPoolMXBean reporta los tamaños inicial, máximo, confirmado (committed) y utilizado de un espacio de memoria específico. Para consultar estos valores directamente:

public static void printCurrentJVMMemoryUsage() {
    List<MemoryPoolMXBean> beans = ManagementFactory.getPlatformMXBeans(MemoryPoolMXBean.class);
    for (MemoryPoolMXBean bean : beans) {
        System.out.printf("area=%s\tname=%s\tinitial=%d\tmax=%d\tcommited=%d\tuse=%d\n", bean.getType().name(),
                bean.getName(), bean.getUsage().getInit(), bean.getUsage().getMax(), bean.getUsage().getCommitted(), bean.getUsage().getUsed());
    }
}

Salida de ejemplo (varía según la versión de la JVM):

area=NON_HEAP	name=Code Cache	initial=2555904	max=134217728	commited=3211264	use=3139712
area=NON_HEAP	name=Metaspace	initial=0	max=-1	commited=8388608	use=7950584
area=NON_HEAP	name=Compressed Class Space	initial=0	max=1073741824	commited=1048576	use=919408
area=HEAP	name=PS Eden Space	initial=67108864	max=1409286144	commited=67108864	use=39057856
area=HEAP	name=PS Survivor Space	initial=11010048	max=11010048	commited=11010048	use=0
area=HEAP	name=PS Old Gen	initial=179306496	max=2863661056	commited=179306496	use=0

El agente reporta estos valores directamente sin procesamiento adicional.

Métricas reportadas

Métrica

Tipo

Unidad

Descripción

arms_jvm_mem_init_bytes

Gauge

Bytes

Tamaño de memoria inicial solicitado por la JVM.

arms_jvm_mem_max_bytes

Gauge

Bytes

Tamaño máximo de memoria disponible.

arms_jvm_mem_committed_bytes

Gauge

Bytes

Memoria que el sistema operativo confirmó para la JVM.

arms_jvm_mem_used_bytes

Gauge

Bytes

Memoria utilizada actualmente.

Dimensiones

Dimensión

Descripción

Valores de ejemplo

area

Tipo de espacio de memoria.

heap, nonheap

id

Nombre del espacio de memoria.

eden, survivor, total

Para más información sobre los espacios de memoria de la JVM, consulte JVM memory details.

Métricas de GC

El método de recopilación depende de la versión del agente:

  • Antes de V4.4.0: una tarea programada consulta ManagementFactory.getPlatformMXBeans(GarbageCollectorMXBean.class).

  • V4.4.0 y posteriores: el agente se suscribe a eventos GarbageCollectionNotificationInfo para recopilar datos en tiempo real.

Cada GarbageCollectorMXBean reporta el conteo acumulativo de GC y su duración desde el inicio de la JVM. Para consultar estos valores directamente:

public static void printGC() {
    List<GarbageCollectorMXBean> beans = ManagementFactory.getPlatformMXBeans(GarbageCollectorMXBean.class);
    for (GarbageCollectorMXBean  bean : beans) {
        System.out.printf("name=%s\tgcCount=%d\tgcTime=%d\n", bean.getName(),
                bean.getCollectionCount(), bean.getCollectionTime());
    }
}

Salida de ejemplo (varía según la versión de la JVM):

name=PS Scavenge	gcCount=0	gcTime=0
name=PS MarkSweep	gcCount=0	gcTime=0

Dado que estos valores son acumulativos desde el inicio de la JVM, el agente calcula la diferencia entre dos recopilaciones consecutivas (intervalo predeterminado: 15 segundos). Así reporta el conteo y la duración correspondientes a cada intervalo.

Métricas reportadas

Métrica

Tipo

Unidad

Descripción

arms_jvm_gc_delta

Gauge (delta)

Count

Número de ejecuciones de GC en el intervalo de recopilación actual.

arms_jvm_gc_seconds_delta

Gauge (delta)

Seconds

Tiempo consumido por el GC en el intervalo de recopilación actual.

Dimensiones

Dimensión

Descripción

Valores de ejemplo

gen

Tipo de generación de GC.

young, old

cause

Motivo que desencadenó el GC (V4.4.0+).

System.gc(), Heap Dump Initiated GC, Allocation FailureConsulte las descripciones de los valores

Asignación de nombres del recolector de basura

El agente de ARMS asigna los nombres reales del recolector de basura a valores estandarizados de la dimensión gen para simplificar el análisis.

Recolectores estándar

Nombre del recolector de basura

**Valor de gen**

Copy

young

G1 Young Gen

young

G1 Old Gen

old

G1 Young Generation

young

G1 Old Generation

old

ParNew

young

ConMarkSweep

old

ConcurrentMarkSweep

old

PS Scavenge

young

PS MarkSweep

old

PS Serial

young

MarkSweepCompact

old

Recolectores ZGC

ZGC utiliza un diseño fundamentalmente distinto que no encaja en la clasificación tradicional young/old. Por ello, el agente de ARMS asigna los recolectores ZGC por separado:

Nombre del recolector de basura

**Valor de gen**

ZGC Cycles

cycles

ZGC Pauses

pauses

ZGC Minor Cycles

young_cycles

ZGC Minor Pauses

young_pauses

ZGC Major Cycles

old_cycles

ZGC Major Pauses

old_pauses

Gráfica de uso de pila de hilos

La consola de ARMS muestra la gráfica Thread Stack Usage. El agente no recopila esta métrica; el valor equivale al conteo actual de hilos activos multiplicado por 1 MB. Este es el tamaño de pila predeterminado que la JVM asigna por hilo para las tablas de variables locales, las pilas de operandos, los enlaces dinámicos y las direcciones de retorno de métodos.

image.png

Métricas de hilos

El agente de ARMS llama periódicamente a ManagementFactory.getThreadMXBean() para obtener el conteo de hilos.

La instancia de ThreadMXBean devuelta proporciona el conteo acumulativo de hilos iniciados, el conteo actual de hilos activos y el conteo de hilos daemon. El agente también cuenta los hilos activos por estado: RUNNABLE, BLOCKED, WAITING y TIMED_WAITING.

Para consultar estos valores directamente:

public static void printThreads() {
    ThreadMXBean threadMXBean = java.lang.management.ManagementFactory.getThreadMXBean();
    int threadCount = threadMXBean.getThreadCount();
    int daemonThreadCount = threadMXBean.getDaemonThreadCount();
    long totalStartedThreadCount = threadMXBean.getTotalStartedThreadCount();
    long terminatedThreadCount = totalStartedThreadCount - threadCount;
    System.out.printf("allStartedThreadCount=%d\tcurrentThreadCount=%d\tdaemonThreadCount=%d\tterminatedThreadCount=%d\n"
            , totalStartedThreadCount, threadCount, daemonThreadCount, terminatedThreadCount);
}

Salida de ejemplo (varía según la versión de la JVM):

allStartedThreadCount=5	currentThreadCount=5	daemonThreadCount=4	terminatedThreadCount=0

El conteo de hilos finalizados equivale al conteo acumulativo de hilos iniciados menos el conteo actual de hilos activos. Todos los demás valores provienen directamente de ThreadMXBean. El agente reporta estos valores sin procesamiento adicional.

Métricas reportadas

Métrica

Tipo

Unidad

Descripción

arms_jvm_threads_count

Gauge

Count

Conteo de hilos por estado.

Dimensiones

La dimensión state distingue las categorías de hilos:

**Valor de state**

Descripción

live

Total de hilos activos.

daemon

Hilos daemon.

terminated

Hilos finalizados (solo agente de ARMS 4.x).

new

Hilos en estado NEW.

runnable

Hilos en estado RUNNABLE.

blocked

Hilos en estado BLOCKED.

wait

Hilos en estado WAITING.

timed-wait

Hilos en estado TIMED_WAITING.

Métricas de carga de clases

El agente de ARMS llama periódicamente a ManagementFactory.getClassLoadingMXBean() para obtener el conteo de clases cargadas.

El ClassLoadingMXBean devuelto proporciona el conteo acumulativo de clases cargadas y descargadas desde el inicio de la JVM. Para consultar estos valores directamente:

public static void printCurrentJVMMemoryUsage() {
    ClassLoadingMXBean classLoaderMXBean = ManagementFactory.getClassLoadingMXBean();
    long totalLoadedClassCount = classLoaderMXBean.getTotalLoadedClassCount();
    long unloadedClassCount = classLoaderMXBean.getUnloadedClassCount();
    System.out.printf("totalLoadedClassCount=%d\tunloadedClassCount=%d\n"
            , totalLoadedClassCount, unloadedClassCount);
}

Salida de ejemplo (varía según la versión de la JVM):

totalLoadedClassCount=1355	unloadedClassCount=0

Como estos valores son acumulativos desde el inicio de la JVM, el agente calcula la diferencia entre dos recopilaciones consecutivas (intervalo predeterminado: 15 segundos) para reportar el conteo correspondiente a cada intervalo.

Métricas reportadas

Métrica

Tipo

Unidad

Descripción

arms_class_load_loaded

Gauge (delta)

Count

Número de clases cargadas en el intervalo de recopilación actual.

arms_class_load_un_loaded

Gauge (delta)

Count

Número de clases descargadas en el intervalo de recopilación actual.

Métricas de descriptores de archivo

El agente de ARMS llama periódicamente a ManagementFactory.getOperatingSystemMXBean() para obtener el uso de descriptores de archivo. Esta métrica solo está disponible en sistemas basados en Unix, donde el bean es una instancia de UnixOperatingSystemMXBean.

Para consultar estos valores directamente:

public static void printFDUsage() {
    OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
    if (!(operatingSystemMXBean instanceof UnixOperatingSystemMXBean)) {
        return;
    }
    long openFDCount = ((UnixOperatingSystemMXBean) operatingSystemMXBean).getOpenFileDescriptorCount();
    long maxFDCount = ((UnixOperatingSystemMXBean) operatingSystemMXBean).getMaxFileDescriptorCount();
    System.out.printf("openFDCount=%d\tfdOpenRatio=%f\n"
            , openFDCount, (double) openFDCount / maxFDCount);
}

Salida de ejemplo (varía según la versión de la JVM):

openFDCount=184	fdOpenRatio=0.017969

La proporción de archivos abiertos se calcula como openFileDescriptorCount / maxFileDescriptorCount. El agente reporta estos valores sin procesamiento adicional.

Métricas reportadas

Métrica

Tipo

Unidad

Descripción

arms_file_desc_open_count

Gauge

Count

Número de descriptores de archivo abiertos actualmente.

arms_file_desc_open_ratio

Gauge

Ratio (0-1)

Proporción de descriptores de archivo abiertos respecto al máximo permitido.