Android Profiler: o que é, recursos de CPU, Memory e Network

Autor: IT Sectr Publicado: 2026-03-30 Tempo de leitura: 9 min

Android Profiler é um conjunto de ferramentas integrado ao Android Studio para monitoramento de desempenho de aplicativos em tempo real. Ele permite rastrear a carga da CPU, consumo de memória, tráfego de rede e consumo de energia sem instalar bibliotecas de terceiros. De acordo com o Android Developers, o profileador está integrado diretamente na IDE e fornece métricas com precisão de milissegundos para qualquer processo no dispositivo conectado.

Principais pontos

  • Android Profiler é o profileador integrado do Android Studio para CPU, Memory, Network e Energy.
  • CPU Profiler mostra a carga do processador por threads com árvore de chamadas de métodos precisa.
  • Memory Profiler monitora Java Heap, Native Heap e Graphics Memory em tempo real.
  • Network Profiler registra cada requisição HTTP com tamanho, duração e cabeçalhos.
  • Energy Profiler identifica operações que descarregam excessivamente a bateria do dispositivo.

O que é o Android Profiler?

Android Profiler é um componente do Android Studio que substituiu os antigos Android Monitor e DDMS. Ele fornece uma interface unificada para profilear todos os aspectos do aplicativo: CPU Profiler para análise do processador, Memory Profiler para trabalho com memória, Network Profiler para requisições de rede e Energy Profiler para consumo de energia. Os dados são coletados automaticamente ao iniciar o aplicativo através do Android Studio.

O profileador funciona tanto em emulador quanto em dispositivo físico conectado por USB. De acordo com o Google I/O 2023, o Android Profiler é usado em mais de 70% dos projetos Android e é considerado a ferramenta padrão de diagnóstico de desempenho. A principal vantagem sobre soluções de terceiros é a integração zero: não é necessário adicionar dependências no build.gradle ou modificar o código do aplicativo.

A arquitetura do Android Profiler é baseada no Perfetto — o rastreador de sistema do Android que coleta dados no nível do kernel e do aplicativo. O Perfetto garante sobrecarga mínima (menos de 1% de CPU) e suporta gravação de longo prazo de até 30 minutos. Isso permite profilear não apenas operações rápidas, mas também cenários longos — transições entre telas, sincronização em segundo plano, consumo de memória durante uma hora de uso.

Quais dados o Android Profiler coleta

O profileador coleta quatro tipos de dados: CPU — carga de cada núcleo e thread, Memory — Java Heap, Native Heap, Stack, Graphics, Network — todas as requisições de entrada e saída, Energy — categorias de consumo de energia (Idle, Light, Medium, Heavy). Os dados são sincronizados na linha do tempo — é possível ver simultaneamente como a mudança da CPU afeta a Memory e o consumo de energia.

CPU Profiler: análise de processador e threads

CPU Profiler mostra a carga do processador em tempo real na linha do tempo, dividida por threads do aplicativo. Cada thread é representada por uma linha ou área colorida — quanto mais larga a área, mais tempo de processador a thread ocupa. Áreas vermelhas significam trabalho do aplicativo, azuis — chamadas de sistema, cinzas — espera.

Para análise detalhada, o CPU Profiler suporta três modos de gravação: Trace Java Methods (rastreamento de todos os métodos Java), Trace C/C++ Functions (rastreamento de funções nativas NDK) e Sample Java Methods (amostragem, modo recomendado). A amostragem oferece a menor sobrecarga e é adequada para profileamento diário, enquanto o rastreamento completo é para encontrar problemas complexos.

kotlin
// Exemplo: a análise do CPU Profiler mostrará este método como bottleneck
class DataProcessor {
    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        // O CPU Profiler mostrará alta carga de CPU em inBackgroundThread
        return withContext(Dispatchers.Default) {
            items.map { it.computeHeavyTransformation() }
        }
    }
}

// Recomendação após o profileamento:
// computeHeavyTransformation leva 80% do tempo — armazenamos o resultado em cache
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) } }
        }
    }
}

Após a gravação, o CPU Profiler mostra a Top-Down Tree — árvore de chamadas com tempo de execução de cada método. Preste atenção na coluna Self Time/Total: se o Self Time de um método for maior que 16 ms e ele for chamado da thread de UI — é uma queda de quadro garantida. A solução é mover cálculos pesados para uma thread em segundo plano via Dispatchers.IO ou Default.

Modos de rastreamento de CPU

Sample Java Methods — modo recomendado para profileamento diário com sobrecarga de 3–5%. Trace Java Methods — rastreamento completo de cada chamada, sobrecarga de até 15%, usado para gravações curtas (5–10 segundos). Trace C/C++ Functions — rastreamento de código NDK via Linux Perf, indispensável para análise de jogos e bibliotecas em C++. Alterne os modos dependendo do tipo de problema.

Memory Profiler: trabalho com memória e busca de vazamentos

Memory Profiler monitora todas as categorias de memória do aplicativo: Java Heap (objetos JVM), Native Heap (alocações C/C++ via JNI), Stack (pilhas de threads) e Graphics (texturas, buffers GPU). A visualização principal é o gráfico temporal de consumo de memória, onde cada categoria é mostrada em sua própria cor. Se o gráfico não diminuir após a coleta de lixo — suspeite de vazamento.

Para encontrar vazamentos, use a função Capture Heap Dump. No momento do dump, o Android Profiler pausa o aplicativo por ~100 ms e cria um arquivo HPROF — um snapshot completo de todos os objetos vivos do Java Heap. Após abrir o dump, você pode ordenar objetos por Retained Size (volume de memória que será liberado ao remover o objeto) e procurar instâncias de Activity, Fragment ou Bitmap que deveriam ter sido destruídas.

De acordo com o Google I/O 2022, o Memory Profiler em conjunto com o LeakCanary cobre 95% dos cenários de detecção de vazamentos de memória no Android. O LeakCanary funciona automaticamente — detecta vazamentos em segundo plano. O Memory Profiler é necessário para análise manual: você vê o quadro completo das alocações, não apenas vazamentos.

Categoria de memóriaDescriçãoTamanho típico
Java HeapHeap JVM: objetos Kotlin/Java5–200 MB
Native HeapAlocações via JNI, NDK1–100 MB
GraphicsTexturas, buffers GPU10–200 MB
StackPilhas de todas as threads1–10 MB

Como interpretar o dump HPROF

Após capturar o dump, ordene os objetos por Retained Size — é o volume de memória que será liberado ao remover o objeto. Procure instâncias de Activity, Fragment e Bitmap com grande Retained Size que não deveriam estar na memória. Vá para a aba Reference Tree para ver a cadeia de referências que mantém o objeto — geralmente é um campo estático de singleton ou um callback não limpo. Uma métrica importante é o Allocation rate (número de alocações por segundo). Se o allocation rate exceder 10.000 objetos/s, o aplicativo gasta muito tempo criando e removendo objetos temporários, o que sobrecarrega o GC e causa microtravamentos. Nesse caso, use a ferramenta View Inspector e encontre locais com criação frequente de objetos em loops.

Network Profiler: monitoramento de requisições de rede

Network Profiler exibe todas as requisições de rede do aplicativo em tempo real na linha do tempo. Cada requisição é mostrada como uma barra horizontal — seu comprimento corresponde ao tempo de execução, a cor — ao tipo de requisição (GET, POST, PUT, DELETE). A rolagem da escala permite ver como as requisições estão distribuídas no tempo e se estão duplicadas.

Todas as bibliotecas populares são suportadas: OkHttp, Retrofit, Volley, Ktor. Para Ktor e OkHttp, o profileador mostra a pilha completa de chamadas, incluindo interceptadores e conversores. Para cada requisição estão disponíveis Request Headers e Response Headers, corpo da resposta (até 1 MB), código de status e duração.

Problemas típicos identificados pelo Network Profiler: ausência de cache (a mesma URL é solicitada a cada abertura), requisições duplicadas (dois componentes carregam os mesmos dados simultaneamente), tamanho excessivo da resposta (o servidor envia 5 MB quando precisa de 50 KB). O Network Profiler ajuda a ver esses problemas literalmente em um olhar na linha do tempo.

Para simular redes lentas, use o Network Conditioning no Android Studio — ele permite limitar a largura de banda para 3G/2G e adicionar latência. Isso é criticamente importante para testar o comportamento do aplicativo em más condições de rede, especialmente para aplicativos que operam em regiões com internet instável.

Energy Profiler: análise de consumo de energia

Energy Profiler avalia o impacto do aplicativo na carga da bateria com base nos dados do Perfetto. A ferramenta não mede o consumo real em miliamperes, mas classifica cada operação em uma de cinco categorias de consumo de energia: Idle, Light, Medium, High e Overloaded. A linha do tempo do Energy Profiler é destacada por cores: verde (carga leve), amarelo (média), vermelho (alta).

Principais causas de zonas vermelhas: WakeLock (o aplicativo mantém o processador ativo), Location GPS (solicitações constantes de coordenadas com alta precisão), Conexões Keep-Alive (trocas frequentes de dados com o servidor), grandes transferências de dados (envio de arquivos, streaming). O Energy Profiler mostra exatamente qual operação em qual momento causou o pico de consumo de energia.

De acordo com o Android Developers, um aplicativo típico não deve passar mais de 5% do tempo na categoria High. Se o Energy Profiler mostrar zonas vermelhas por mais de 10% do tempo de profileamento — o aplicativo não passará na revisão pelo critério de Battery Drain. Recomendação — usar WorkManager para tarefas em segundo plano, limitar solicitações de Location à precisão mínima necessária e agregar requisições de rede em lotes.

Como usar o Android Profiler: guia prático

Iniciar o Android Profiler é feito com um clique: no Android Studio, abra View → Tool Windows → Profiler ou clique duas vezes no ícone do Profiler no painel direito. Após iniciar o aplicativo no dispositivo conectado, o Android Studio se conectará automaticamente ao processo e começará a coletar dados. Na linha do tempo, os gráficos de CPU, Memory, Network e Energy aparecerão imediatamente.

Para análise detalhada, selecione a guia desejada (CPU, Memory, Network ou Energy) e inicie a gravação. Para CPU, recomendo o modo Sample Java Methods com duração de gravação de 30 segundos — isso é suficiente para um cenário típico. Para Memory — dump do heap após a execução do cenário (Capture Heap Dump). Para Network, a gravação é iniciada automaticamente, basta pressionar o botão Stop após concluir o cenário.

Após parar a gravação, exporte os dados: File → Save As salva toda a sessão em um arquivo .perf. Isso é conveniente para comparar métricas antes e depois da otimização. Crie uma sessão de baseline na primeira versão estável e compare cada nova sessão com ela — esta é a única maneira de avaliar objetivamente as mudanças de desempenho.

Automação de profileamento em CI

O Android Profiler pode ser executado a partir da linha de comando via Android Studio CLI e Firebase Test Lab. O Firebase Test Lab suporta profileamento de desempenho como parte dos testes de UI: você obtém métricas de CPU, Memory e Network junto com o resultado do teste. Configure o pipeline para que, quando as métricas caírem 10% em relação ao baseline, o pipeline de CI seja bloqueado até a verificação pelo desenvolvedor.

Perguntas frequentes

O Android Profiler diminui a velocidade do aplicativo?

O impacto é mínimo. O Android Profiler usa o Perfetto para coleta de dados, que adiciona menos de 1% de sobrecarga de CPU. No modo Sample Java Methods, a sobrecarga é de cerca de 3–5%, o que é insignificante para profileamento de cenários. O rastreamento completo de métodos pode dar sobrecarga de até 15%, por isso é usado apenas para gravações curtas.

É possível profilear o aplicativo sem o Android Studio?

Sim, os traces do sistema podem ser gravados via Perfetto CLI diretamente do dispositivo: adb shell perfetto --out /data/local/tmp/trace.perf. Em seguida, abra o arquivo na interface do Perfetto UI (ui.perfetto.dev) ou importe no Android Studio para visualização com a marcação completa do aplicativo.

Como o Network Profiler difere do Charles Proxy?

O Android Profiler é uma ferramenta de sistema que não requer configuração de proxy. Mostra as requisições diretamente na IDE no contexto de desempenho. O Charles Proxy é um servidor proxy externo que fornece análise mais detalhada (interceptação de tráfego, modificação de requisições, reenvio). Para profileamento de desempenho, use o Android Profiler; para análise de contratos de API, use o Charles.

Como encontrar vazamento de memória através do Memory Profiler?

Faça um dump do heap antes de executar o cenário (por exemplo, antes de abrir a Activity). Execute o cenário — abra a Activity e feche-a. Faça um segundo dump. Compare o número de instâncias vivas de Activity: se no segundo dump houver mais — vazamento. Ordene por Retained Size, encontre Activities extras e veja a Reference Tree para determinar a causa.

Por que o Energy Profiler não está disponível em alguns dispositivos?

O Energy Profiler requer suporte a Power Profiles no nível do dispositivo e Android 8.0+. Em emuladores e algumas ROMs (especialmente chinesas), os dados podem estar ausentes. A solução é profilear o consumo de energia em dispositivos de referência Pixel ou Samsung com firmware Android puro.

Resumo

  • Android Profiler é o profileador integrado do Android Studio para monitoramento de CPU, Memory, Network e Energy.
  • CPU Profiler analisa a carga de núcleos e threads usando rastreamento Perfetto com sobrecarga inferior a 1%.
  • Memory Profiler monitora Java Heap, Native Heap, Graphics e Stack com suporte a dumps HPROF.
  • Network Profiler registra todas as requisições OkHttp, Retrofit e Ktor com cabeçalhos, corpo e duração.
  • Energy Profiler classifica o consumo de energia do aplicativo em categorias de Idle a Overloaded.
  • O profileador funciona sem modificação do código do aplicativo — integração zero.
  • Integre o profileamento ao CI via Firebase Test Lab e mantenha um baseline para cada versão.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também