Android Profiler: qué es, funciones de CPU, Memory y Network

Autor: IT Sectr Publicado: 2026-03-30 Tiempo de lectura: 9 min

Android Profiler es un conjunto de herramientas integradas en Android Studio para monitorizar el rendimiento de las aplicaciones en tiempo real. Permite rastrear la carga de la CPU, el consumo de memoria, el tráfico de red y el consumo de energía sin instalar bibliotecas de terceros. Según Android Developers, el perfilador está integrado directamente en el IDE y proporciona métricas con precisión de milisegundos para cualquier proceso en el dispositivo conectado.

Puntos clave

  • Android Profiler — perfilador integrado de Android Studio para CPU, Memory, Network y Energy.
  • CPU Profiler muestra la carga del procesador por hilos con un árbol de llamadas de métodos preciso.
  • Memory Profiler rastrea Java Heap, Native Heap y Graphics Memory en tiempo real.
  • Network Profiler captura cada solicitud HTTP con tamaño, duración y encabezados.
  • Energy Profiler identifica operaciones que agotan excesivamente la batería del dispositivo.

¿Qué es Android Profiler?

Android Profiler es un componente de Android Studio que reemplazó a las obsoletas Android Monitor y DDMS. Proporciona una interfaz unificada para perfilar todos los aspectos de una aplicación: CPU Profiler para el análisis del procesador, Memory Profiler para la gestión de la memoria, Network Profiler para las solicitudes de red y Energy Profiler para el consumo de energía. Los datos se recopilan automáticamente al iniciar una aplicación a través de Android Studio.

El perfilador funciona tanto en el emulador como en un dispositivo físico conectado por USB. Según Google I/O 2023, Android Profiler se utiliza en más del 70% de los proyectos de Android y se considera la herramienta estándar de diagnóstico de rendimiento. La principal ventaja sobre las soluciones de terceros es la integración cero: no es necesario añadir dependencias en build.gradle ni modificar el código de la aplicación.

La arquitectura de Android Profiler está construida sobre Perfetto, el rastreador de sistema de Android que recopila datos a nivel de kernel y de aplicación. Perfetto proporciona una sobrecarga mínima (menos del 1% de CPU) y admite grabaciones de larga duración de hasta 30 minutos. Esto permite perfilar no solo operaciones rápidas sino también escenarios prolongados: transiciones entre pantallas, sincronización en segundo plano, consumo de memoria durante una hora de uso.

¿Qué datos recopila Android Profiler?

El perfilador recopila cuatro tipos de datos: CPU — carga por núcleo e hilo, Memory — Java Heap, Native Heap, Stack, Graphics, Network — todas las solicitudes entrantes y salientes, Energy — categorías de consumo de energía (Idle, Light, Medium, Heavy). Los datos están sincronizados en una línea de tiempo para que puedas ver simultáneamente cómo los cambios en la CPU afectan a la memoria y al consumo de energía.

CPU Profiler: análisis de CPU y hilos

CPU Profiler muestra la carga del procesador en tiempo real en una línea de tiempo, desglosada por hilos de la aplicación. Cada hilo está representado por una línea o área de color: cuanto más ancha es el área, más tiempo de CPU consume el hilo. Las áreas rojas indican trabajo de la aplicación, las azules indican llamadas al sistema y las grises indican espera.

Para un análisis detallado, CPU Profiler admite tres modos de grabación: Trace Java Methods (rastreo de todos los métodos Java), Trace C/C++ Functions (rastreo de funciones nativas NDK) y Sample Java Methods (muestreo, modo recomendado). El muestreo proporciona la menor sobrecarga y es adecuado para la creación de perfiles diaria, mientras que el rastreo completo se utiliza para encontrar problemas complejos.

kotlin
// Ejemplo: el análisis de CPU Profiler mostrará este método como un cuello de botella
class DataProcessor {
    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        // CPU Profiler mostrará una alta carga de CPU en inBackgroundThread
        return withContext(Dispatchers.Default) {
            items.map { it.computeHeavyTransformation() }
        }
    }
}

// Recomendación después de la creación de perfiles:
// computeHeavyTransformation consume el 80% del tiempo — almacenamos en caché el resultado
class DataProcessorOptimized {
    private val cache = LruCache<String, Result>(100)

    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        return withContext(Dispatchers.Default) {
            items.mapNotNull { cache.get(it.id) ?: it.computeHeavyTransformation().also { cache.put(it.id, it) } }
        }
    }
}

Después de la grabación, CPU Profiler muestra un Top-Down Tree (árbol de arriba a abajo) con el tiempo de ejecución de cada método. Presta atención a la columna Self Time/Total: si el Self Time de un método supera los 16 ms y se llama desde el hilo de UI, esto garantiza una pérdida de fotograma. La solución es mover los cálculos pesados a un hilo en segundo plano usando Dispatchers.IO o Default.

Modos de rastreo de CPU

Sample Java Methods — modo recomendado para la creación de perfiles diaria con una sobrecarga del 3-5%. Trace Java Methods — rastreo completo de cada llamada, sobrecarga de hasta el 15%, se usa para grabaciones cortas (5-10 segundos). Trace C/C++ Functions — rastreo de código NDK a través de Linux Perf, indispensable para analizar juegos y bibliotecas en C++. Cambia los modos según el tipo de problema.

Memory Profiler: gestión de memoria y detección de fugas

Memory Profiler rastrea todas las categorías de memoria de una aplicación: Java Heap (objetos JVM), Native Heap (asignaciones C/C++ a través de JNI), Stack (pilas de hilos) y Graphics (texturas, búferes de GPU). La visualización principal es un gráfico temporal del consumo de memoria donde cada categoría se muestra en su propio color. Si el gráfico no disminuye después de la recolección de basura, sospecha una fuga.

Para encontrar fugas, usa la función Capture Heap Dump. En el momento del volcado, Android Profiler pausa la aplicación durante ~100 ms y crea un archivo HPROF, una instantánea completa de todos los objetos vivos de Java Heap. Después de abrir el volcado, puedes ordenar los objetos por Retained Size (la cantidad de memoria que se liberará al eliminar el objeto) y buscar instancias de Activity, Fragment o Bitmap que deberían haber sido destruidas.

Según Google I/O 2022, Memory Profiler combinado con LeakCanary cubre el 95% de los escenarios de detección de fugas de memoria en Android. LeakCanary funciona automáticamente: detecta fugas en segundo plano. Memory Profiler es necesario para el análisis manual: ves la imagen completa de las asignaciones, no solo las fugas.

Categoría de memoriaDescripciónTamaño típico
Java HeapHeap de JVM: objetos Kotlin/Java5–200 MB
Native HeapAsignaciones a través de JNI, NDK1–100 MB
GraphicsTexturas, búferes de GPU10–200 MB
StackPilas de todos los hilos1–10 MB

Cómo interpretar un volcado HPROF

Después de capturar el volcado, ordena los objetos por Retained Size (tamaño retenido): esta es la cantidad de memoria que se liberará al eliminar el objeto. Busca instancias de Activity, Fragment y Bitmap con un gran Retained Size que no deberían estar en memoria. Ve a la pestaña Reference Tree para ver la cadena de referencias que mantienen el objeto, generalmente un campo estático de un singleton o un callback no limpiado. Una métrica importante es Allocation rate (tasa de asignación, número de asignaciones por segundo). Si la tasa de asignación supera los 10 000 objetos/s, la aplicación dedica demasiado tiempo a crear y eliminar objetos temporales, lo que sobrecarga el GC y causa microcongelaciones. En este caso, usa View Inspector y encuentra los lugares con creación frecuente de objetos en bucles.

Network Profiler: monitoreo de solicitudes de red

Network Profiler muestra todas las solicitudes de red de la aplicación en tiempo real en una línea de tiempo. Cada solicitud se muestra como una barra horizontal: su longitud corresponde al tiempo de ejecución y su color al tipo de solicitud (GET, POST, PUT, DELETE). Desplazando la línea de tiempo puedes ver cómo se distribuyen las solicitudes en el tiempo y si están duplicadas.

Todas las bibliotecas populares son compatibles: OkHttp, Retrofit, Volley, Ktor. Para Ktor y OkHttp, el perfilador muestra la pila de llamadas completa, incluidos los interceptores y convertidores. Para cada solicitud, están disponibles Request Headers y Response Headers, el cuerpo de la respuesta (hasta 1 MB), el código de estado y la duración.

Problemas típicos identificados por Network Profiler: falta de almacenamiento en caché (la misma URL se solicita en cada apertura), solicitudes duplicadas (dos componentes cargan simultáneamente los mismos datos), tamaño de respuesta excesivo (el servidor devuelve 5 MB cuando se necesitan 50 KB). Network Profiler te ayuda a ver estos problemas literalmente de un vistazo a la línea de tiempo.

Para emular redes lentas, usa Network Conditioning en Android Studio: te permite limitar el ancho de banda a 3G/2G y añadir latencia. Esto es críticamente importante para probar el comportamiento de la aplicación en condiciones de red deficientes, especialmente para aplicaciones que operan en regiones con internet inestable.

Energy Profiler: análisis del consumo de energía

Energy Profiler evalúa el impacto de la aplicación en la carga de la batería basándose en los datos de Perfetto. La herramienta no mide el consumo real en miliamperios, sino que clasifica cada operación en una de cinco categorías de consumo de energía: Idle, Light, Medium, High y Overloaded. La línea de tiempo de Energy Profiler está codificada por colores: verde (carga ligera), amarillo (media), rojo (alta).

Las principales causas de las zonas rojas: WakeLock (la aplicación mantiene el procesador activo), Location GPS (solicitudes constantes de coordenadas de alta precisión), conexiones Keep-Alive (intercambio frecuente de datos con el servidor), transferencias de datos grandes (subida de archivos, streaming). Energy Profiler muestra con precisión qué operación causó el pico de consumo de energía en cada momento.

Según Android Developers, una aplicación típica no debería pasar más del 5% del tiempo en la categoría High. Si Energy Profiler muestra zonas rojas durante más del 10% del tiempo de perfilado, la aplicación no superará la revisión según el criterio de consumo de batería. Recomendación: usa WorkManager para tareas en segundo plano, limita las solicitudes de Location a la precisión mínima necesaria y agrupa las solicitudes de red en lotes.

Cómo usar Android Profiler: guía práctica

Iniciar Android Profiler es cuestión de un clic: en Android Studio abre View → Tool Windows → Profiler o haz doble clic en el icono de Profiler en el panel derecho. Después de iniciar la aplicación en el dispositivo conectado, Android Studio se conectará automáticamente al proceso y comenzará a recopilar datos. Los gráficos de CPU, Memory, Network y Energy aparecerán inmediatamente en la línea de tiempo.

Para un análisis detallado, selecciona la pestaña deseada (CPU, Memory, Network o Energy) y comienza la grabación. Para CPU, recomiendo el modo Sample Java Methods con una duración de grabación de 30 segundos, suficiente para un escenario típico. Para Memory, captura un volcado de heap después de completar el escenario (Capture Heap Dump). Para Network, la grabación se inicia automáticamente, solo presiona el botón Stop al finalizar el escenario.

Después de detener la grabación, exporta los datos: File → Save As guarda toda la sesión en un archivo .perf. Esto es conveniente para comparar métricas antes y después de la optimización. Crea una sesión de referencia (baseline) en la primera versión estable y compara cada nueva sesión con ella: esta es la única manera de evaluar objetivamente los cambios de rendimiento.

Automatización de la creación de perfiles en CI

Android Profiler se puede ejecutar desde la línea de comandos a través de Android Studio CLI y Firebase Test Lab. Firebase Test Lab admite la creación de perfiles de rendimiento como parte de las pruebas de UI: obtienes métricas de CPU, Memory y Network junto con el resultado de la prueba. Configura el pipeline para que si las métricas caen un 10% respecto a la referencia, el pipeline de CI se bloquee hasta que un desarrollador lo revise.

Preguntas frecuentes

¿Android Profiler ralentiza la aplicación?

El impacto es mínimo. Android Profiler usa Perfetto para la recopilación de datos, que añade menos del 1% de sobrecarga de CPU. En el modo Sample Java Methods, la sobrecarga es de aproximadamente el 3-5%, lo que no es significativo para la creación de perfiles por escenarios. El rastreo completo de métodos puede dar hasta un 15% de sobrecarga, por lo que solo se usa para grabaciones cortas.

¿Se puede perfilar una aplicación sin Android Studio?

Sí, las trazas del sistema se pueden grabar a través de Perfetto CLI directamente desde el dispositivo: adb shell perfetto --out /data/local/tmp/trace.perf. Luego abre el archivo en la interfaz de Perfetto UI (ui.perfetto.dev) o impórtalo en Android Studio para verlo con el marcado completo de la aplicación.

¿En qué se diferencia Network Profiler de Charles Proxy?

Android Profiler es una herramienta del sistema que no requiere configuración de proxy. Muestra las solicitudes directamente en el IDE en el contexto del rendimiento. Charles Proxy es un servidor proxy externo que proporciona un análisis más detallado (intercepción de tráfico, modificación de solicitudes, reenvío). Para la creación de perfiles de rendimiento, usa Android Profiler; para el análisis de contratos de API, usa Charles.

¿Cómo encontrar una fuga de memoria con Memory Profiler?

Toma un volcado de heap antes de ejecutar un escenario (por ejemplo, antes de abrir una Activity). Ejecuta el escenario: abre la Activity y ciérrala. Toma un segundo volcado. Compara el número de instancias de Activity vivas: si hay más en el segundo volcado, es una fuga. Ordena por Retained Size, encuentra las instancias de Activity sobrantes y revisa el Reference Tree para determinar la causa.

¿Por qué Energy Profiler no está disponible en algunos dispositivos?

Energy Profiler requiere soporte de Power Profiles a nivel de dispositivo y Android 8.0+. Los datos pueden faltar en emuladores y algunos firmwares (especialmente los chinos). Solución: perfila el consumo de energía en dispositivos de referencia como Pixel o Samsung con firmware Android limpio.

Resumen

  • Android Profiler — perfilador integrado de Android Studio para monitorear CPU, Memory, Network y Energy.
  • CPU Profiler analiza la carga de núcleos e hilos usando el rastreo de Perfetto con menos del 1% de sobrecarga.
  • Memory Profiler rastrea Java Heap, Native Heap, Graphics y Stack con soporte de volcados HPROF.
  • Network Profiler captura todas las solicitudes de OkHttp, Retrofit y Ktor con encabezados, cuerpo y duración.
  • Energy Profiler clasifica el consumo de energía de la aplicación de Idle a Overloaded.
  • El perfilador funciona sin modificar el código de la aplicación: integración cero.
  • Integra la creación de perfiles en CI a través de Firebase Test Lab y mantén una referencia (baseline) para cada versión.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también