Android Profiler — is een ingebouwde set tools in Android Studio voor real-time monitoring van applicatieprestaties. Het maakt het mogelijk om CPU-belasting, geheugengebruik, netwerkverkeer en energieverbruik te volgen zonder externe bibliotheken te installeren. Volgens Android Developers is de profiler direct geïntegreerd in de IDE en levert het metingen met milliseconde precisie voor elk proces op een aangesloten apparaat.
Belangrijkste punten
Android Profiler — is een Android Studio-component die de verouderde Android Monitor en DDMS heeft vervangen. Het biedt een uniforme interface voor het profileren van alle aspecten van de applicatie: CPU Profiler voor processoranalyse, Memory Profiler voor geheugenwerk, Network Profiler voor netwerkverzoeken en Energy Profiler voor energieverbruik. Gegevens worden automatisch verzameld bij het starten van de applicatie via Android Studio.
De profiler werkt zowel op de emulator als op een fysiek apparaat dat via USB is aangesloten. Volgens Google I/O 2023 wordt Android Profiler gebruikt in meer dan 70% van de Android-projecten en wordt het beschouwd als de standaard tool voor prestatie-diagnostiek. Het belangrijkste voordeel ten opzichte van externe oplossingen — nul integratie: geen noodzaak om afhankelijkheden toe te voegen in build.gradle of de applicatiecode te wijzigen.
De architectuur van Android Profiler is gebouwd op Perfetto — de Android-systeemtracer die gegevens verzamelt op kernel- en applicatieniveau. Perfetto zorgt voor minimale overhead (minder dan 1% CPU) en ondersteunt langdurige opnames tot 30 minuten. Dit maakt het mogelijk om niet alleen snelle operaties te profileren, maar ook lange scenario's — transities tussen schermen, achtergrondsynchronisatie, geheugengebruik gedurende een uur gebruik.
De profiler verzamelt vier soorten gegevens: CPU — belasting van elke kern en thread, Memory — Java Heap, Native Heap, Stack, Graphics, Network — alle inkomende en uitgaande verzoeken, Energy — categorieën van energieverbruik (Idle, Light, Medium, Heavy). Gegevens zijn gesynchroniseerd op de tijdlijn — je kunt tegelijkertijd zien hoe een CPU-verandering het geheugen en energieverbruik beïnvloedt.
CPU Profiler toont de processorbelasting in real-time op de tijdlijn, verdeeld over de applicatie-threads. Elke thread wordt weergegeven als een gekleurde lijn of gebied — hoe breder het gebied, hoe meer processortijd de thread inneemt. Rode gebieden betekenen applicatiewerk, blauwe — systeemaanroepen, grijze — wachten.
Voor gedetailleerde analyse ondersteunt CPU Profiler drie opnamemodi: Trace Java Methods (traceren van alle Java-methoden), Trace C/C++ Functions (traceren van native NDK-functies) en Sample Java Methods (samplen, aanbevolen modus). Samplen geeft de minste overhead en is geschikt voor dagelijks profileren, terwijl volledig tracen dient voor het vinden van complexe problemen.
// Voorbeeld: CPU Profiler-analyse toont deze methode als bottleneck
class DataProcessor {
suspend fun processLargeDataset(items: List<Item>): List<Result> {
// CPU Profiler toont hoge CPU-belasting in inBackgroundThread
return withContext(Dispatchers.Default) {
items.map { it.computeHeavyTransformation() }
}
}
}
// Aanbeveling na profilering:
// computeHeavyTransformation neemt 80% van de tijd in beslag — resultaat cachen
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) } }
}
}
}
Na opname toont CPU Profiler de Top-Down Tree — de aanroepboom met uitvoeringstijd van elke methode. Let op de kolom Self Time/Total: als Self Time van een methode meer dan 16 ms is en wordt aangeroepen vanuit de UI-thread — is dit een gegarandeerde frame drop. Oplossing — verplaats zware berekeningen naar een achtergrondthread via Dispatchers.IO of Default.
Sample Java Methods — aanbevolen modus voor dagelijks profileren met 3–5% overhead. Trace Java Methods — volledig tracen van elke aanroep, overhead tot 15%, gebruikt voor korte opnames (5–10 seconden). Trace C/C++ Functions — tracen van NDK-code via Linux Perf, onmisbaar voor analyse van games en C++-bibliotheken. Wissel van modus afhankelijk van het type probleem.
Memory Profiler volgt alle geheugencategorieën van de applicatie: Java Heap (JVM-objecten), Native Heap (C/C++-allocaties via JNI), Stack (thread-stacks) en Graphics (texturen, GPU-buffers). De belangrijkste visualisatie — een tijdlijngrafiek van geheugengebruik, waarbij elke categorie in zijn eigen kleur wordt weergegeven. Als de grafiek niet daalt na garbage collection (GC) — vermoed dan een lek.
Gebruik de functie Capture Heap Dump om lekken te vinden. Op het moment van de dump stopt Android Profiler de applicatie gedurende ~100 ms en maakt een HPROF-bestand — een volledige snapshot van alle levende Java Heap-objecten. Na het openen van de dump kun je objecten sorteren op Retained Size (de hoeveelheid geheugen die vrijkomt bij verwijdering van het object) en zoeken naar instanties van Activity, Fragment of Bitmap die vernietigd hadden moeten zijn.
Volgens Google I/O 2022 dekt Memory Profiler in combinatie met LeakCanary 95% van de scenario's voor het detecteren van geheugenlekken op Android. LeakCanary werkt automatisch — detecteert het lek op de achtergrond. Memory Profiler is nodig voor handmatige analyse: je ziet het volledige beeld van allocaties, niet alleen de lekken.
| Geheugencategorie | Beschrijving | Typische grootte |
|---|---|---|
| Java Heap | JVM-heap: Kotlin/Java-objecten | 5–200 MB |
| Native Heap | Allocaties via JNI, NDK | 1–100 MB |
| Graphics | Texturen, GPU-buffers | 10–200 MB |
| Stack | Stacks van alle threads | 1–10 MB |
Na het vastleggen van de dump, sorteer objecten op Retained Size — dit is de hoeveelheid geheugen die vrijkomt bij verwijdering van het object. Zoek naar instanties van Activity, Fragment en Bitmap met grote Retained Size die niet in het geheugen zouden moeten zijn. Ga naar het tabblad Reference Tree om de referentieketen te zien die het object vasthoudt — meestal is dit een statisch veld van een singleton of een niet-gewiste callback. Een belangrijke metriek — Allocation rate (aantal allocaties per seconde). Als de allocation rate hoger is dan 10.000 objecten/s, besteedt de applicatie te veel tijd aan het maken en verwijderen van tijdelijke objecten, wat GC belast en micro-stutters veroorzaakt. Gebruik in dat geval de View Inspector en vind plaatsen waar frequent objecten worden gemaakt in loops.
Network Profiler toont alle netwerkverzoeken van de applicatie in real-time op de tijdlijn. Elk verzoek wordt weergegeven als een horizontale balk — de lengte komt overeen met de uitvoeringstijd, de kleur met het type verzoek (GET, POST, PUT, DELETE). Door de tijdlijn te scrollen kun je zien hoe verzoeken over de tijd zijn verdeeld en of ze dupliceren.
Alle populaire bibliotheken worden ondersteund: OkHttp, Retrofit, Volley, Ktor. Voor Ktor en OkHttp toont de profiler de volledige call-stack, inclusief interceptors en converters. Voor elk verzoek zijn Request Headers en Response Headers, de antwoordbody (tot 1 MB), statuscode en duur beschikbaar.
Typische problemen gedetecteerd door Network Profiler: gebrek aan caching (dezelfde URL wordt bij elke opening opgevraagd), duplicerende verzoeken (twee componenten laden tegelijkertijd dezelfde gegevens), overmatige antwoordgrootte (server stuurt 5 MB terwijl 50 KB nodig is). Network Profiler helpt dergelijke problemen letterlijk in één oogopslag op de tijdlijn te zien.
Gebruik Network Conditioning in Android Studio voor het emuleren van langzame netwerken — hiermee kun je de bandbreedte beperken tot 3G/2G en vertraging toevoegen. Dit is cruciaal voor het testen van het applicatiegedrag in slechte netwerkomstandigheden, vooral voor applicaties die werken in regio's met instabiel internet.
Energy Profiler evalueert de impact van de applicatie op de batterijlading op basis van Perfetto-gegevens. Het instrument meet niet het werkelijke verbruik in milliampère, maar classificeert elke operatie in een van de vijf categorieën van energieverbruik: Idle, Light, Medium, High en Overloaded. De tijdlijn van Energy Profiler is gekleurd: groen (lichte belasting), geel (gemiddeld), rood (hoog).
Belangrijkste oorzaken van rode zones: WakeLock (applicatie houdt de processor actief), Location GPS (constante locatieverzoeken met hoge precisie), Keep-Alive-verbindingen (frequente gegevensuitwisseling met server), grote gegevensoverdrachten (bestandsuploads, streaming). Energy Profiler toont precies welke operatie op welk moment een piek in energieverbruik veroorzaakte.
Volgens Android Developers mag een typische applicatie niet meer dan 5% van de tijd in de categorie High doorbrengen. Als Energy Profiler rode zones langer dan 10% van de profileringsduur toont — zal de applicatie de review op Battery Drain-criterium niet doorstaan. Aanbeveling — gebruik WorkManager voor achtergrondtaken, beperk Location-verzoeken tot de minimaal benodigde precisie en aggregeer netwerkverzoeken in batches.
Het starten van Android Profiler gebeurt met één klik: open in Android Studio View → Tool Windows → Profiler of dubbelklik op het Profiler-pictogram in het rechterpaneel. Nadat de applicatie op het aangesloten apparaat is gestart, maakt Android Studio automatisch verbinding met het proces en begint met het verzamelen van gegevens. Op de tijdlijn verschijnen onmiddellijk de CPU-, Memory-, Network- en Energy-grafieken.
Selecteer voor gedetailleerde analyse het gewenste tabblad (CPU, Memory, Network of Energy) en start de opname. Voor CPU raad ik de modus Sample Java Methods aan met een opnameduur van 30 seconden — dit is voldoende voor een typisch scenario. Voor Memory — heap-dump na het uitvoeren van het scenario (Capture Heap Dump). Voor Network start de opname automatisch, druk gewoon op de Stop-knop na afloop van het scenario.
Exporteer na het stoppen van de opname de gegevens: File → Save As slaat de hele sessie op in een .perf-bestand. Dit is handig voor het vergelijken van metriek voor en na optimalisatie. Maak een baseline-sessie op de eerste stabiele versie en vergelijk elke nieuwe sessie ermee — dit is de enige manier om prestatieveranderingen objectief te beoordelen.
Android Profiler kan vanaf de commandoregel worden gestart via Android Studio CLI en Firebase Test Lab. Firebase Test Lab ondersteunt prestatieprofilering als onderdeel van UI-tests: je ontvangt CPU-, Memory- en Network-metriek samen met het testresultaat. Configureer de pipeline zo dat bij een daling van metriek met 10% ten opzichte van baseline, de CI-pipeline wordt geblokkeerd totdat een ontwikkelaar het heeft gecontroleerd.
Veelgestelde vragen
De impact is minimaal. Android Profiler gebruikt Perfetto voor gegevensverzameling, wat minder dan 1% CPU-overhead toevoegt. In de modus Sample Java Methods is de overhead ongeveer 3–5%, wat verwaarloosbaar is voor scenario-profilering. Volledige methodetracing kan tot 15% overhead geven, daarom wordt het alleen voor korte opnames gebruikt.
Ja, systeemtraces kunnen direct vanaf het apparaat worden opgenomen via Perfetto CLI: adb shell perfetto --out /data/local/tmp/trace.perf. Open het bestand vervolgens in de Perfetto UI (ui.perfetto.dev) of importeer het in Android Studio voor weergave met volledige applicatie-markup.
Android Profiler — is een systeemtool die geen proxy-configuratie vereist. Toont verzoeken direct in de IDE in prestatiecontext. Charles Proxy — een externe proxyserver die gedetailleerdere analyse biedt (verkeer onderscheppen, verzoeken wijzigen, opnieuw verzenden). Gebruik Android Profiler voor prestatieprofilering, Charles voor API-contractanalyse.
Maak een heap-dump vóór uitvoering van het scenario (bijv. voor het openen van Activity). Voer het scenario uit — open en sluit de Activity. Maak een tweede dump. Vergelijk het aantal levende Activity-instanties: als er in de tweede dump meer zijn — lek. Sorteer op Retained Size, vind de overtollige Activities en bekijk Reference Tree om de oorzaak te achterhalen.
Energy Profiler vereist ondersteuning voor Power Profiles op apparaatniveau en Android 8.0+. Op emulators en sommige firmware (vooral Chinese) kunnen gegevens ontbreken. Oplossing — profileer energieverbruik op referentie-Pixel- of Samsung-apparaten met schone Android-firmware.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook