Todos los productos
Search
Centro de documentos

Application Real-Time Monitoring Service:Diagnóstico del alto consumo de memoria heap con memory hotspot

Última actualización: Sep 06, 2026

La función memory hotspot de Application Real-Time Monitoring Service (ARMS) ayuda a identificar las causas raíz del alto consumo de memoria heap en la máquina virtual de Java (JVM). Utiliza perfiles continuos para registrar el tamaño y la frecuencia de las asignaciones de memoria cada vez que un hilo supera el umbral de asignación de heap. También captura una instantánea de la pila de métodos en ese momento. Cuando el sistema presenta un uso elevado de memoria heap de la JVM, memory hotspot identifica rápidamente los métodos de lógica de negocio específicos que provocan solicitudes de memoria heap grandes o frecuentes.

Habilitar memory hotspot

  1. Inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, elija Application Monitoring > Application List.

  2. En la página Application List, seleccione una región en la parte superior y luego haga clic en el nombre de su aplicación.

    Nota

    Los iconos de la columna Language indican lo siguiente:

    Java图标: una aplicación Java conectada a Application Monitoring.

    image: una aplicación Go conectada a Application Monitoring.

    image: una aplicación Python conectada a Application Monitoring.

    -: una aplicación conectada a Managed Service for OpenTelemetry.

  3. En el panel de navegación izquierdo, haga clic en Application Settings y luego haga clic en la pestaña Custom Configuration.

  4. En la sección Continuous profiling, active Main switch y luego active el interruptor Memory hotspot. Especifique las direcciones IP de las instancias de la aplicación que desea habilitar o un bloque CIDR para un grupo de instancias.

  5. En la parte inferior de la página, haga clic en Save.

    Los cambios surten efecto de inmediato. No es necesario reiniciar la aplicación.

Consultar los datos de memory hotspot

Ejemplo: un método que asigna 1 MB de memoria heap por segundo.

public class FixedRateAllocAction {

    // The entry point for the request.
   public void runBusiness() {
        try {
            sink = new byte[1024];
        } catch (InterruptedException e) {
            // Ignore
        }
    }
}
  1. Inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, elija Application Monitoring > Application List.

  2. En la página Application List, seleccione una región en la parte superior y luego haga clic en el nombre de su aplicación.

    Nota

    Los iconos de la columna Language indican lo siguiente:

    Java图标: una aplicación Java conectada a Application Monitoring.

    image: una aplicación Go conectada a Application Monitoring.

    image: una aplicación Python conectada a Application Monitoring.

    -: una aplicación conectada a Managed Service for OpenTelemetry.

  3. En el panel de navegación izquierdo, haga clic en Continuous profiling. En la lista de instancias de la izquierda, seleccione la instancia de destino. Luego, a la derecha, establezca el intervalo de tiempo de los datos.

  4. En la pestaña Single View, filtre los datos y consulte el análisis agregado.

  5. Haga clic en Aggregation & Analysis. En la página que aparece, establezca Profiling Type como Allocated Memory.

    Nota

    Tipos de perfilado:

    • CPU Time: datos de perfilado de puntos críticos de CPU. Para obtener más información, consulte Diagnose high CPU utilization with CPU hotspot.

    • Allocated Memory: datos de perfilado de memory hotspot correspondientes al volumen de asignación.

    • Allocations: datos de perfilado de memory hotspot correspondientes a la frecuencia de asignación. Este tipo permite identificar qué métodos solicitan memoria con mayor frecuencia.

    En la página Aggregation & Analysis, la lista de la izquierda muestra el volumen de asignación de memoria heap de todos los métodos involucrados en esta llamada. El gráfico de flamas de la derecha se genera a partir de los seguimientos de pila de dichos métodos. Las columnas se definen a continuación:

    • La columna Self muestra los recursos que consume un método, sin incluir sus métodos secundarios. Esto facilita la identificación de los métodos que consumen recursos significativos.

    • La columna Total muestra los recursos que consumen un método y sus métodos secundarios. Sirve para detectar los mayores contribuyentes al consumo de recursos de la pila de llamadas.

    Realice el siguiente análisis:

    1. Ordene la columna Self en orden descendente. Busque y haga clic en el método con el valor Self más alto: com.alibaba.cloud.pressure.memory.FixedRateAllocAction.runBusiness(). El gráfico de flamas de la derecha se centrará en los métodos relevantes.

    2. En el gráfico de flamas enfocado de la derecha, com.alibaba.cloud.pressure.memory.FixedRateAllocAction.runBusiness() es el marco más ancho en la parte superior.

    3. Un marco ancho en la parte superior de un gráfico de flamas representa un método definido por la aplicación. Esto indica que el método com.alibaba.cloud.pressure.memory.FixedRateAllocAction.runBusiness() es un cuello de botella importante que consumió recursos considerables durante el perfilado. Utilice el nombre del método para revisar su lógica de negocio y buscar oportunidades de optimización.

Con base en este análisis, el método com.alibaba.cloud.pressure.memory.FixedRateAllocAction.runBusiness() asignó 56.56 MB de memoria heap en un minuto, lo cual coincide con el ejemplo.

Referencias

La función de perfilado continuo también sirve para investigar trazas lentas y un uso elevado de CPU. Para obtener más información, consulte los siguientes temas:

Para conocer los problemas comunes del perfilado continuo, consulte FAQ.