Android Profiler: co to je, možnosti CPU, Memory a Network

Autor: IT Sectr Publikováno: 2026-03-30 Doba čtení: 9 min

Android Profiler — je sada nástrojů integrovaná v Android Studio pro sledování výkonu aplikací v reálném čase. Umožňuje sledovat vytížení CPU, spotřebu paměti, síťový provoz a spotřebu energie bez instalace knihoven třetích stran. Podle údajů Android Developers je profiler integrován přímo do IDE a poskytuje metriky s přesností na milisekundy pro libovolný proces na připojeném zařízení.

Hlavní body

  • Android Profiler — integrovaný profiler Android Studio pro CPU, Memory, Network a Energy.
  • CPU Profiler zobrazuje vytížení procesoru po vláknech s přesným stromem volání metod.
  • Memory Profiler sleduje Java Heap, Native Heap a Graphics Memory v reálném čase.
  • Network Profiler zaznamenává každý HTTP požadavek s velikostí, dobou trvání a hlavičkami.
  • Energy Profiler odhaluje operace, které nadměrně vybíjejí baterii zařízení.

Co je Android Profiler?

Android Profiler — je součást Android Studio, která nahradila zastaralé Android Monitor a DDMS. Poskytuje jednotné rozhraní pro profilování všech aspektů aplikace: CPU Profiler pro analýzu procesoru, Memory Profiler pro práci s pamětí, Network Profiler pro síťové požadavky a Energy Profiler pro spotřebu energie. Data se sbírají automaticky při spuštění aplikace prostřednictvím Android Studio.

Profiler funguje jak na emulátoru, tak na fyzickém zařízení připojeném přes USB. Podle Google I/O 2023 se Android Profiler používá ve více než 70% Android projektů a je považován za standardní nástroj pro diagnostiku výkonu. Hlavní výhoda oproti řešením třetích stran — nulová integrace: nemusíte přidávat závislosti do build.gradle ani upravovat kód aplikace.

Architektura Android Profiler je postavena na Perfetto — systémovém traceru Androidu, který sbírá data na úrovni jádra i aplikace. Perfetto zajišťuje minimální overhead (méně než 1% CPU) a podporuje dlouhodobý záznam až 30 minut. To umožňuje profilovat nejen rychlé operace, ale i dlouhé scénáře — přechody mezi obrazovkami, synchronizaci na pozadí, spotřebu paměti za hodinu používání.

Jaká data Android Profiler sbírá

Profiler sbírá čtyři typy dat: CPU — vytížení každého jádra a vlákna, Memory — Java Heap, Native Heap, Stack, Graphics, Network — všechny příchozí a odchozí požadavky, Energy — kategorie spotřeby energie (Idle, Light, Medium, Heavy). Data jsou synchronizovaná na časové ose — můžete zároveň vidět, jak změna CPU ovlivňuje Memory a spotřebu energie.

CPU Profiler: analýza procesoru a vláken

CPU Profiler zobrazuje vytížení procesoru v reálném čase na časové ose rozdělené podle vláken aplikace. Každé vlákno je reprezentováno barevnou čarou nebo oblastí — čím širší je oblast, tím více času CPU vlákno zabírá. Červené oblasti znamenají činnost aplikace, modré — systémová volání, šedé — čekání.

Pro detailní analýzu CPU Profiler podporuje tři režimy záznamu: Trace Java Methods (trasování všech Java metod), Trace C/C++ Functions (trasování nativních funkcí NDK) a Sample Java Methods (vzorkování, doporučený režim). Vzorkování má nejmenší overhead a je vhodné pro každodenní profilování, zatímco plné trasování — pro hledání složitých problémů.

kotlin
// Příklad: analýza CPU Profileru ukáže tuto metodu jako bottleneck
class DataProcessor {
    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        // CPU Profiler ukáže vysoké vytížení CPU v inBackgroundThread
        return withContext(Dispatchers.Default) {
            items.map { it.computeHeavyTransformation() }
        }
    }
}

// Doporučení po profilování:
// computeHeavyTransformation zabírá 80% času — uložíme výsledek do 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) } }
        }
    }
}

Po záznamu CPU Profiler zobrazí Top-Down Tree — strom volání s dobou provádění každé metody. Sledujte sloupec Self Time/Total: pokud je Self Time metody větší než 16 ms a je volána z UI vlákna — je to zaručeně ztracený snímek. Řešení — přeneste těžké výpočty do vlákna na pozadí přes Dispatchers.IO nebo Default.

Režimy trasování CPU

Sample Java Methods — doporučený režim pro každodenní profilování s overheadem 3–5%. Trace Java Methods — plné trasování každého volání, overhead až 15%, používá se pro krátké záznamy (5–10 sekund). Trace C/C++ Functions — trasování NDK kódu přes Linux Perf, nepostradatelný pro analýzu her a knihoven v C++. Režimy přepínejte podle typu problému.

Memory Profiler: práce s pamětí a hledání úniků

Memory Profiler sleduje všechny kategorie paměti aplikace: Java Heap (objekty JVM), Native Heap (alokace C/C++ přes JNI), Stack (zásobníky vláken) a Graphics (textury, GPU buffery). Hlavní vizualizace — časový graf spotřeby paměti, kde každá kategorie má svou barvu. Pokud graf po sběru odpadků neklesá — podezřívejte únik paměti.

Pro hledání úniků použijte funkci Capture Heap Dump. V okamžiku dumpu Android Profiler na ~100 ms zastaví aplikaci a vytvoří soubor HPROF — úplný snímek všech živých objektů Java Heap. Po otevření dumpu můžete řadit objekty podle Retained Size (objem paměti, který se uvolní při odstranění objektu) a hledat instance Activity, Fragment nebo Bitmap, které měly být zničeny.

Podle Google I/O 2022 pokrývá Memory Profiler ve spojení s LeakCanary 95% scénářů detekce úniků paměti na Androidu. LeakCanary pracuje automaticky — detekuje únik na pozadí. Memory Profiler je potřeba pro ruční analýzu: vidíte úplný obraz alokací, nejen úniky.

Kategorie pamětiPopisTypická velikost
Java HeapHromada JVM: objekty Kotlin/Java5–200 MB
Native HeapAlokace přes JNI, NDK1–100 MB
GraphicsTextury, GPU buffery10–200 MB
StackZásobníky všech vláken1–10 MB

Jak interpretovat HPROF dump

Po zachycení dumpu seřaďte objekty podle Retained Size — to je objem paměti, který se uvolní při odstranění objektu. Hledejte instance Activity, Fragment a Bitmap s velkým Retained Size, které by v paměti být neměly. Přejděte na záložku Reference Tree, abyste viděli řetězec referencí držících objekt — nejčastěji je to statické pole singletonu nebo nevyčištěné callback. Důležitá metrika — Allocation rate (počet alokací za sekundu). Pokud allocation rate přesahuje 10 000 objektů/s, aplikace tráví příliš mnoho času vytvářením a odstraňováním dočasných objektů, což zatěžuje GC a způsobuje mikrozáseky. V tomto případě použijte nástroj View Inspector a najděte místa s častým vytvářením objektů v cyklech.

Network Profiler: sledování síťových požadavků

Network Profiler zobrazuje všechny síťové požadavky aplikace v reálném čase na časové ose. Každý požadavek je zobrazen jako vodorovný pruh — jeho délka odpovídá době provádění, barva — typu požadavku (GET, POST, PUT, DELETE). Posunem osy uvidíte, jak jsou požadavky rozloženy v čase a zda se neduplikují.

Podporovány jsou všechny oblíbené knihovny: OkHttp, Retrofit, Volley, Ktor. Pro Ktor a OkHttp profiler zobrazuje úplný zásobník volání včetně interceptorů a transformátorů. Pro každý požadavek jsou k dispozici Request Headers a Response Headers, tělo odpovědi (až 1 MB), stavový kód a doba trvání.

Typické problémy, které Network Profiler odhalí: chybějící cache (stejné URL se vyžaduje při každém otevření), duplicitní požadavky (dvě komponenty současně načítají stejná data), předimenzovaná odpověď (server posílá 5 MB, když je potřeba 50 KB). Network Profiler pomáhá vidět takové problémy doslova jedním pohledem na časovou osu.

Pro simulaci pomalých sítí použijte Network Conditioning v Android Studio — umožňuje omezit propustnost na 3G/2G a přidat zpoždění. To je kritické pro testování chování aplikace ve špatných síťových podmínkách, zejména pro aplikace fungující v regionech s nestabilním internetem.

Energy Profiler: analýza spotřeby energie

Energy Profiler odhaduje vliv aplikace na nabití baterie na základě dat Perfetto. Nástroj neměří skutečnou spotřebu v miliampérech, ale klasifikuje každou operaci do jedné z pěti kategorií spotřeby energie: Idle, Light, Medium, High a Overloaded. Časová osa Energy Profiler je podbarvena barvou: zelená (nízké zatížení), žlutá (střední), červená (vysoké).

Hlavní příčiny červených zón: WakeLock (aplikace drží procesor aktivní), Location GPS (neustálé dotazy na souřadnice s vysokou přesností), Keep-Alive spojení (častá výměna dat se serverem), velké přenosy dat (odesílání souborů, streaming). Energy Profiler přesně ukazuje, která operace v jakém okamžiku způsobila špičku spotřeby energie.

Podle Android Developers by typická aplikace neměla trávit v kategorii High více než 5% času. Pokud Energy Profiler ukazuje červené zóny déle než 10% času profilování — aplikace neprojde review podle kritéria Battery Drain. Doporučení — použijte WorkManager pro úlohy na pozadí, omezte Location požadavky na minimálně nutnou přesnost a agregujte síťové požadavky do dávek.

Jak používat Android Profiler: praktický průvodce

Spuštění Android Profiler je na jedno kliknutí: v Android Studio otevřete View → Tool Windows → Profiler nebo dvakrát klikněte na ikonu Profiler v pravém panelu. Po spuštění aplikace na připojeném zařízení se Android Studio automaticky připojí k procesu a začne sbírat data. Na časové ose se okamžitě objeví grafy CPU, Memory, Network a Energy.

Pro detailní analýzu vyberte příslušnou záložku (CPU, Memory, Network nebo Energy) a začněte záznam. Pro CPU doporučuji režim Sample Java Methods s délkou záznamu 30 sekund — to stačí pro typický scénář. Pro Memory — dump haldy po provedení scénáře (Capture Heap Dump). Pro Network se záznam spouští automaticky, stačí po dokončení scénáře stisknout tlačítko Stop.

Po zastavení záznamu exportujte data: File → Save As uloží celou relaci do souboru .perf. To je vhodné pro porovnání metrik před a po optimalizaci. Vytvořte baseline relaci na první stabilní verzi a porovnávejte s ní každou novou relaci — to je jediný způsob, jak objektivně vyhodnotit změny výkonu.

Automatizace profilování v CI

Android Profiler lze spustit z příkazového řádku přes Android Studio CLI a Firebase Test Lab. Firebase Test Lab podporuje profilování výkonu jako součást UI testů: získáte metriky CPU, Memory a Network spolu s výsledkem testu. Nastavte pipeline tak, aby při poklesu metrik o 10% oproti baseline se CI-pipeline blokoval do ověření vývojářem.

Časté dotazy

Zpomaluje Android Profiler běh aplikace?

Vliv je minimální. Android Profiler používá pro sběr dat Perfetto, který přidává méně než 1% overheadu CPU. V režimu Sample Java Methods je overhead asi 3–5%, což je pro scénářové profilování zanedbatelné. Plné trasování metod může dávat overhead až 15%, proto se používá pouze pro krátké záznamy.

Lze profilovat aplikaci bez Android Studio?

Ano, systémové trace lze zaznamenat přes Perfetto CLI přímo ze zařízení: adb shell perfetto --out /data/local/tmp/trace.perf. Poté soubor otevřete v rozhraní Perfetto UI (ui.perfetto.dev) nebo ho importujte do Android Studio pro zobrazení s úplnou anotací aplikace.

Čím se Network Profiler liší od Charles Proxy?

Android Profiler je systémový nástroj, který nevyžaduje nastavení proxy. Zobrazuje požadavky přímo v IDE v kontextu výkonu. Charles Proxy je externí proxy server poskytující detailnější analýzu (zachycení provozu, úprava požadavků, opětovné odeslání). Pro profilování výkonu použijte Android Profiler, pro analýzu API kontraktů — Charles.

Jak najít únik paměti přes Memory Profiler?

Proveďte dump haldy před provedením scénáře (např. před otevřením Activity). Provedete scénář — otevřete Activity a zavřete ji. Proveďte druhý dump. Porovnejte počet živých instancí Activity: pokud je jich ve druhém dumpu více — je to únik. Seřaďte podle Retained Size, najděte přebytečné Activity a podívejte se na Reference Tree pro zjištění příčiny.

Proč Energy Profiler není dostupný na některých zařízeních?

Energy Profiler vyžaduje podporu Power Profiles na úrovni zařízení a Android 8.0+. Na emulátorech a některých firmware (zejména čínských) mohou data chybět. Řešení — profilujte spotřebu energie na referenčních zařízeních Pixel nebo Samsung s čistým firmware Androidu.

Shrnutí

  • Android Profiler — integrovaný profiler Android Studio pro sledování CPU, Memory, Network a Energy.
  • CPU Profiler analyzuje vytížení jader a vláken pomocí trasování Perfetto s overheadem pod 1%.
  • Memory Profiler sleduje Java Heap, Native Heap, Graphics a Stack s podporou HPROF dumpů.
  • Network Profiler zaznamenává všechny požadavky OkHttp, Retrofit a Ktor s hlavičkami, tělem a délkou.
  • Energy Profiler klasifikuje spotřebu energie aplikace do kategorií od Idle po Overloaded.
  • Profiler funguje bez úpravy kódu aplikace — nulová integrace.
  • Zapojte profilování do CI přes Firebase Test Lab a udržujte baseline pro každý release.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také