Android Profiler: mi ez, a CPU, Memory és Network képességei

Szerző: IT Sectr Megjelenés: 2026-03-30 Olvasási idő: 9 perc

Android Profiler — egy beépített eszközkészlet az Android Studio-ban az alkalmazások teljesítményének valós idejű monitorozására. Lehetővé teszi a CPU-terhelés, memóriafogyasztás, hálózati forgalom és energiafogyasztás nyomon követését külső könyvtárak telepítése nélkül. A Android Developers szerint a profilozó közvetlenül az IDE-be van integrálva, és ezredmásodperc pontosságú mérőszámokat biztosít bármely folyamathoz a csatlakoztatott eszközön.

Főbb pontok

  • Android Profiler — beépített Android Studio profilozó CPU, Memory, Network és Energy számára.
  • CPU Profiler mutatja a processzor terhelését szálanként a metódushívások pontos fájával.
  • Memory Profiler valós időben követi a Java Heap, Native Heap és Graphics Memory használatát.
  • Network Profiler rögzíti minden HTTP-kérést mérettel, időtartammal és fejlécekkel.
  • Energy Profiler azonosítja azokat a műveleteket, amelyek túlzottan merítik az eszköz akkumulátorát.

Mi az Android Profiler?

Android Profiler — az Android Studio egyik összetevője, amely felváltotta az elavult Android Monitor-t és DDMS-t. Egységes felületet biztosít az alkalmazás minden aspektusának profilozásához: CPU Profiler a processzor elemzéséhez, Memory Profiler a memóriával való munkához, Network Profiler a hálózati kérésekhez és Energy Profiler az energiafogyasztáshoz. Az adatok automatikusan gyűlnek össze az alkalmazás Android Studio-n keresztüli indításakor.

A profilozó működik az emulátoron és a USB-n keresztül csatlakoztatott fizikai eszközön is. A Google I/O 2023 adatai szerint az Android Profiler-t az Android projektek több mint 70%-ában használják, és a teljesítménydiagnosztika szabványos eszközének tekintik. A külső megoldásokkal szembeni fő előny — nulla integráció: nem kell függőségeket hozzáadni a build.gradle-hez vagy módosítani az alkalmazás kódját.

Az Android Profiler architektúrája a Perfetto — Android rendszerkövető, amely mag- és alkalmazásszinten gyűjti az adatokat — alapjaira épül. A Perfetto minimális terhelést biztosít (kevesebb mint 1% CPU), és támogatja a hosszú távú, akár 30 perces rögzítést. Ez lehetővé teszi nemcsak a gyors műveletek, hanem a hosszú forgatókönyvek — képernyők közötti átmenetek, háttérszinkronizálás, memóriahasználat egy óra használat során — profilozását is.

Milyen adatokat gyűjt az Android Profiler

A profilozó négy típusú adatot gyűjt: CPU — az egyes magok és szálak terhelése, Memory — Java Heap, Native Heap, Stack, Graphics, Network — az összes bejövő és kimenő kérés, Energy — energiafogyasztási kategóriák (Idle, Light, Medium, Heavy). Az adatok az idővonalon szinkronizálva vannak — egyszerre láthatja, hogy a CPU változása hogyan befolyásolja a memóriát és az energiafogyasztást.

CPU Profiler: processzor és szálak elemzése

CPU Profiler valós időben mutatja a processzor terhelését az idővonalon, az alkalmazás szálai szerint felosztva. Minden szálat egy színes vonal vagy terület képvisel — minél szélesebb a terület, annál több processzoridőt foglal el a szál. A piros területek az alkalmazás működését, a kékek — rendszerhívásokat, a szürkék — várakozást jelentenek.

A részletes elemzéshez a CPU Profiler három rögzítési módot támogat: Trace Java Methods (az összes Java metódus követése), Trace C/C++ Functions (natív NDK függvények követése) és Sample Java Methods (mintavételezés, ajánlott mód). A mintavételezés adja a legkisebb terhelést, és alkalmas a napi profilozásra, míg a teljes követés az összetett problémák megtalálására szolgál.

kotlin
// Példa: a CPU Profiler elemzés ezt a metódust bottleneck-ként fogja mutatni
class DataProcessor {
    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        // A CPU Profiler magas CPU-terhelést mutat az inBackgroundThread-ben
        return withContext(Dispatchers.Default) {
            items.map { it.computeHeavyTransformation() }
        }
    }
}

// Javaslat profilozás után:
// A computeHeavyTransformation az idő 80%-t veszi igénybe — gyorsítótárazzuk az eredményt
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) } }
        }
    }
}

A rögzítés után a CPU Profiler megjeleníti a Top-Down Tree — hívásfát az egyes metódusok végrehajtási idejével. Figyeljen a Self Time/Total oszlopra: ha egy metódus Self Time értéke meghaladja a 16 ms-t és a UI szálból hívódik — ez garantált képkocka kihagyás. Megoldás — a nehéz számítások áthelyezése háttérszálba a Dispatchers.IO vagy Default segítségével.

CPU követési módok

Sample Java Methods — ajánlott mód napi profilozáshoz 3–5% terheléssel. Trace Java Methods — minden hívás teljes követése, akár 15% terhelés, rövid felvételekhez használatos (5–10 másodperc). Trace C/C++ Functions — NDK kód követése Linux Perf segítségével, nélkülözhetetlen játékok és C++ könyvtárak elemzéséhez. Váltson módot a probléma típusától függően.

Memory Profiler: munka a memóriával és szivárgások keresése

Memory Profiler követi az alkalmazás összes memóriakategóriáját: Java Heap (JVM objektumok), Native Heap (C/C++ foglalások JNI-n keresztül), Stack (szálvermek) és Graphics (textúrák, GPU pufferek). A fő vizualizáció — a memóriafogyasztás időbeli grafikonja, ahol minden kategória a saját színével van jelölve. Ha a grafikon nem csökken a szemétgyűjtés (GC) után — gyanítson szivárgást.

A szivárgások kereséséhez használja a Capture Heap Dump funkciót. A dump pillanatában az Android Profiler ~100 ms-ra leállítja az alkalmazást, és létrehoz egy HPROF fájlt — a Java Heap összes élő objektumának teljes pillanatképét. A dump megnyitása után az objektumokat Retained Size (a objektum törlésekor felszabaduló memória mennyisége) szerint rendezheti, és kereshet olyan Activity, Fragment vagy Bitmap példányokat, amelyeknek meg kellett volna semmisülniük.

A Google I/O 2022 adatai szerint a Memory Profiler a LeakCanary-val kombinálva az Android memóriaszivárgás-észlelési forgatókönyveinek 95%-át lefedi. A LeakCanary automatikusan működik — észleli a szivárgást a háttérben. A Memory Profiler a kézi elemzéshez szükséges: nemcsak a szivárgásokat látja, hanem a foglalások teljes képét is.

Memória kategóriaLeírásJellemző méret
Java HeapJVM kupac: Kotlin/Java objektumok5–200 MB
Native HeapFoglalások JNI-n, NDK-n keresztül1–100 MB
GraphicsTextúrák, GPU pufferek10–200 MB
StackAz összes szál verme1–10 MB

Hogyan értelmezzük a HPROF dump-ot

A dump rögzítése után rendezze az objektumokat Retained Size szerint — ez az a memória mennyiség, amely az objektum törlésekor felszabadul. Keressen nagy Retained Size-tel rendelkező Activity, Fragment és Bitmap példányokat, amelyeknek nem kellene a memóriában lenniük. Lépjen a Reference Tree fülre, hogy lássa az objektumot tartó hivatkozási láncot — leggyakrabban ez egy singleton statikus mezője vagy egy meg nem tisztított callback. Fontos mérőszám — Allocation rate (foglalások száma másodpercenként). Ha az allocation rate meghaladja a 10 000 objektum/mp értéket, az alkalmazás túl sok időt tölt ideiglenes objektumok létrehozásával és törlésével, ami terheli a GC-t és mikroakadásokat okoz. Ebben az esetben használja a View Inspector eszközt, és keresse meg a gyakori objektumlétrehozás helyeit a ciklusokban.

Network Profiler: hálózati kérések monitorozása

Network Profiler valós időben jeleníti meg az alkalmazás összes hálózati kérését az idővonalon. Minden kérés vízszintes sávként jelenik meg — hossza a végrehajtási időnek, színe a kérés típusának (GET, POST, PUT, DELETE) felel meg. Az idővonal görgetése lehetővé teszi, hogy lássa, hogyan oszlanak el a kérések az időben, és hogy duplikálódnak-e.

Minden népszerű könyvtár támogatott: OkHttp, Retrofit, Volley, Ktor. A Ktor és OkHttp esetében a profilozó a teljes hívási vermet mutatja, beleértve az elfogókat (interceptorokat) és konvertereket. Minden kéréshez elérhetők a Request Headers és Response Headers, a válasz törzse (akár 1 MB), az állapotkód és az időtartam.

A Network Profiler által észlelt tipikus problémák: gyorsítótárazás hiánya (ugyanaz az URL minden megnyitáskor lekérdeződik), duplikálódó kérések (két összetevő egyszerre tölti be ugyanazokat az adatokat), túlzott válaszméret (a szerver 5 MB-ot küld, amikor 50 KB-ra lenne szükség). A Network Profiler segít, hogy ezeket a problémákat szó szerint egy pillantással lássa az idővonalon.

A lassú hálózatok emulálásához használja a Network Conditioning funkciót az Android Studio-ban — ez lehetővé teszi a sávszélesség 3G/2G-re korlátozását és késleltetés hozzáadását. Ez kritikus fontosságú az alkalmazás viselkedésének teszteléséhez rossz hálózati körülmények között, különösen az instabil internetű régiókban működő alkalmazások esetében.

Energy Profiler: energiafogyasztás elemzése

Energy Profiler a Perfetto adatai alapján értékeli az alkalmazás hatását az akkumulátor töltöttségére. Az eszköz nem méri a tényleges fogyasztást milliamperben, hanem minden műveletet az energiafogyasztás öt kategóriájának egyikébe sorol: Idle, Light, Medium, High és Overloaded. Az Energy Profiler idővonala színnel van kiemelve: zöld (könnyű terhelés), sárga (közepes), piros (magas).

A piros zónák megjelenésének fő okai: WakeLock (az alkalmazás aktívan tartja a processzort), Location GPS (állandó koordináta-kérések nagy pontossággal), Keep-Alive kapcsolatok (gyakori adatcsere a szerverrel), nagy adatátvitelek (fájlküldés, streamelés). Az Energy Profiler pontosan megmutatja, melyik művelet és mikor okozott energiafogyasztási csúcsot.

A Android Developers szerint egy tipikus alkalmazás nem tölthet több mint 5% időt a High kategóriában. Ha az Energy Profiler a profilozási idő több mint 10%-ában piros zónákat mutat — az alkalmazás nem megy át a Battery Drain kritérium szerinti felülvizsgálaton. Javaslat — használja a WorkManager-t háttérfeladatokhoz, korlátozza a Location kéréseket a minimálisan szükséges pontosságra, és aggregálja a hálózati kéréseket batch-ekbe.

Hogyan használjuk az Android Profiler-t: gyakorlati útmutató

Az Android Profiler elindítása egy kattintással történik: az Android Studio-ban nyissa meg a View → Tool Windows → Profiler menüt, vagy kattintson duplán a Profiler ikonra a jobb oldali panelen. Miután az alkalmazás elindult a csatlakoztatott eszközön, az Android Studio automatikusan csatlakozik a folyamathoz, és megkezdi az adatgyűjtést. Az idővonalon azonnal megjelennek a CPU, Memory, Network és Energy grafikonok.

A részletes elemzéshez válassza ki a kívánt lapot (CPU, Memory, Network vagy Energy), és kezdje el a rögzítést. CPU esetén a Sample Java Methods módot ajánlom 30 másodperces rögzítési idővel — ez elegendő egy tipikus forgatókönyvhöz. Memory esetén — kupac dump a forgatókönyv végrehajtása után (Capture Heap Dump). Network esetén a rögzítés automatikusan indul, elég megnyomni a Stop gombot a forgatókönyv befejezése után.

A rögzítés leállítása után exportálja az adatokat: a File → Save As az egész munkamenetet egy .perf fájlba menti. Ez kényelmes a metrikák optimalizálás előtti és utáni összehasonlításához. Hozzon létre egy alapvonal (baseline) munkamenetet az első stabil verzióban, és hasonlítsa össze vele minden új munkamenetet — ez az egyetlen módja a teljesítményváltozások objektív értékelésének.

Profilozás automatizálása CI-ben

Az Android Profiler parancssorból is elindítható az Android Studio CLI és a Firebase Test Lab segítségével. A Firebase Test Lab támogatja a teljesítményprofilozást az UI tesztek részeként: a CPU, Memory és Network metrikákat a teszt eredményével együtt kapja meg. Konfigurálja a pipeline-t úgy, hogy a metrikák 10%-os csökkenése esetén az alapvonalhoz képest a CI pipeline blokkolva legyen a fejlesztő általi ellenőrzésig.

Gyakran ismételt kérdések

Lassítja-e az Android Profiler az alkalmazás működését?

A hatás minimális. Android Profiler a Perfetto-t használja az adatgyűjtéshez, amely kevesebb mint 1% CPU-többletterhelést ad. Sample Java Methods módban a terhelés körülbelül 3–5%, ami elhanyagolható a forgatókönyv-profilozáshoz. A metódusok teljes követése akár 15% terhelést is okozhat, ezért csak rövid felvételekhez használják.

Profilozható-e az alkalmazás Android Studio nélkül?

Igen, a rendszernyomok közvetlenül az eszközről rögzíthetők a Perfetto CLI segítségével: adb shell perfetto --out /data/local/tmp/trace.perf. Ezután nyissa meg a fájlt a Perfetto UI (ui.perfetto.dev) felületén, vagy importálja Android Studio-ba a teljes alkalmazás-jelöléssel történő megtekintéshez.

Miben különbözik a Network Profiler a Charles Proxy-tól?

Android Profiler — egy rendszereszköz, amely nem igényel proxy konfigurációt. Közvetlenül az IDE-ben mutatja a kéréseket a teljesítmény kontextusában. Charles Proxy — egy külső proxy szerver, amely részletesebb elemzést biztosít (forgalom elfogása, kérések módosítása, újraküldés). Teljesítményprofilozáshoz használja az Android Profiler-t, API-szerződések elemzéséhez — a Charles-t.

Hogyan találhatunk memóriaszivárgást a Memory Profiler segítségével?

Készítsen kupac dump-ot a forgatókönyv végrehajtása előtt (például az Activity megnyitása előtt). Hajtsa végre a forgatókönyvet — nyissa meg az Activity-t, majd zárja be. Készítsen egy második dump-ot. Hasonlítsa össze az élő Activity példányok számát: ha a második dump-ban több van — szivárgás. Rendezze Retained Size szerint, találja meg a felesleges Activity-ket, és nézze meg a Reference Tree-t az ok megállapításához.

Miért nem elérhető az Energy Profiler egyes eszközökön?

Energy Profiler Power Profiles támogatást igényel eszközszinten és Android 8.0+-t. Emulátorokon és egyes firmware-eken (különösen kínai) az adatok hiányozhatnak. Megoldás — profilozza az energiafogyasztást referencia Pixel vagy Samsung eszközökön tiszta Android firmware-rel.

Összegzés

  • Android Profiler — beépített Android Studio profilozó CPU, Memory, Network és Energy monitorozásához.
  • CPU Profiler elemzi a magok és szálak terhelését Perfetto követéssel, kevesebb mint 1% terheléssel.
  • Memory Profiler követi a Java Heap, Native Heap, Graphics és Stack területeket HPROF dump támogatással.
  • Network Profiler rögzíti az összes OkHttp, Retrofit és Ktor kérést fejlécekkel, törzzsel és időtartammal.
  • Energy Profiler az alkalmazás energiafogyasztását Idle-től Overloaded-ig osztályozza.
  • A profilozó az alkalmazás kódjának módosítása nélkül működik — nulla integráció.
  • Építse be a profilozást a CI-be Firebase Test Lab segítségével, és tároljon alapvonalat minden kiadáshoz.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is