Android Profiler: шта је то, могућности CPU, Memory и Network

Аутор: IT Sectr Објављено: 2026-03-30 Време читања: 9 мин

Android Profiler — је уграђени скуп алата у Android Studio за праћење перформанси апликација у реалном времену. Омогућава праћење оптерећења CPU-а, потрошње меморије, мрежног саобраћаја и потрошње енергије без инсталације спољних библиотека. Према Android Developers, профилер је интегрисан директно у IDE и пружа метрике са прецизношћу до милисекунде за сваки процес на повезаном уређају.

Главно

  • Android Profiler — уграђени профилер Android Studio за CPU, Memory, Network и Energy.
  • CPU Profiler приказује оптерећење процесора по нитима са прецизним стаблом позива метода.
  • Memory Profiler прати Java Heap, Native Heap и Graphics Memory у реалном времену.
  • Network Profiler бележи сваки HTTP захтев са величином, трајањем и заглављима.
  • Energy Profiler открива операције које претерано празне батерију уређаја.

Шта је Android Profiler?

Android Profiler — је компонента Android Studio која је заменила застареле Android Monitor и DDMS. Пружа јединствени интерфејс за профилисање свих аспеката апликације: CPU Profiler за анализу процесора, Memory Profiler за рад са меморијом, Network Profiler за мрежне захтеве и Energy Profiler за потрошњу енергије. Подаци се прикупљају аутоматски при покретању апликације кроз Android Studio.

Профилер ради и на емулатору и на физичком уређају повезаном преко USB-а. Према подацима Google I/O 2023, Android Profiler се користи у преко 70% Android пројеката и сматра се стандардним алатом за дијагностику перформанси. Главна предност у односу на спољна решења — нулта интеграција: није потребно додавати зависности у build.gradle или мењати код апликације.

Архитектура Android Profiler-а је изграђена на Perfetto — системском трасеру Android-а који прикупља податке на нивоу језгра и апликације. Perfetto обезбеђује минимално оптерећење (мање од 1% CPU) и подржава дуготрајно снимање до 30 минута. Ово омогућава профилисање не само брзих операција, већ и дугих сценарија — прелаза између екрана, позадинске синхронизације, потрошње меморије током сат времена коришћења.

Које податке прикупља Android Profiler

Профилер прикупља четири врсте података: CPU — оптерећење сваког језгра и нити, Memory — Java Heap, Native Heap, Stack, Graphics, Network — све долазне и одлазне захтеве, Energy — категорије потрошње енергије (Idle, Light, Medium, Heavy). Подаци су синхронизовани на временској оси — можете истовремено видети како промена CPU-а утиче на меморију и потрошњу енергије.

CPU Profiler: анализа процесора и нити

CPU Profiler приказује оптерећење процесора у реалном времену на временској оси, подељено по нитима апликације. Свака нит је представљена обојеном линијом или облашћу — што је област шира, то нит заузима више процесорског времена. Црвене области означавају рад апликације, плаве — системске позиве, сиве — чекање.

За детаљну анализу CPU Profiler подржава три режима снимања: Trace Java Methods (трасирање свих Java метода), Trace C/C++ Functions (трасирање изворних NDK функција) и Sample Java Methods (узорковање, препоручени режим). Узорковање даје најмање оптерећење и погодно је за свакодневно профилисање, а потпуно трасирање — за проналажење сложених проблема.

kotlin
// Пример: анализа CPU Profiler-а ће показати овај метод као bottleneck
class DataProcessor {
    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        // CPU Profiler ће показати високо оптерећење CPU-а у inBackgroundThread
        return withContext(Dispatchers.Default) {
            items.map { it.computeHeavyTransformation() }
        }
    }
}

// Препорука након профилисања:
// computeHeavyTransformation заузима 80% времена — кеширамо резултат
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) } }
        }
    }
}

Након снимања, CPU Profiler приказује Top-Down Tree — стабло позива са временом извршења сваког метода. Обратите пажњу на колону Self Time/Total: ако Self Time метода прелази 16 ms и позива се из UI нити — то је гарантовано пропуштање оквира. Решење — преместите тешка израчунавања у позадинску нит кроз Dispatchers.IO или Default.

Режими трасирања CPU

Sample Java Methods — препоручени режим за свакодневно профилисање са оптерећењем 3–5%. Trace Java Methods — потпуно трасирање сваког позива, оптерећење до 15%, користи се за кратка снимања (5–10 секунди). Trace C/C++ Functions — трасирање NDK кода кроз Linux Perf, незаменљив за анализу игара и библиотека у C++. Мењајте режиме у зависности од врсте проблема.

Memory Profiler: рад са меморијом и проналажење цурења

Memory Profiler прати све категорије меморије апликације: Java Heap (JVM објекти), Native Heap (C/C++ алокације преко JNI), Stack (стогови нити) и Graphics (текстуре, GPU бафери). Главна визуелизација — временски график потрошње меморије, где је свака категорија приказана својом бојом. Ако график не опада након сакупљања отпада (GC) — сумњајте на цурење.

За проналажење цурења користите функцију Capture Heap Dump. У тренутку дампа, Android Profiler зауставља апликацију на ~100 ms и креира HPROF датотеку — потпуни снимак свих живих објеката у Java Heap-у. Након отварања дампа, можете сортирати објекте по Retained Size (обим меморије који ће се ослободити при уклањању објекта) и тражити инстанце Activity, Fragment или Bitmap које су требале бити уништене.

Према подацима Google I/O 2022, Memory Profiler у комбинацији са LeakCanary покрива 95% сценарија откривања цурења меморије на Android-у. LeakCanary ради аутоматски — открива цурење у позадини. Memory Profiler је потребан за ручну анализу: видите потпуну слику алокација, а не само цурења.

Категорија меморијеОписТипична величина
Java HeapJVM хрпа: Kotlin/Java објекти5–200 MB
Native HeapАлокације преко JNI, NDK1–100 MB
GraphicsТекстуре, GPU бафери10–200 MB
StackСтогови свих нити1–10 MB

Како интерпретирати HPROF дамп

Након преузимања дампа, сортирајте објекте по Retained Size — то је обим меморије који ће се ослободити при уклањању објекта. Тражите инстанце Activity, Fragment и Bitmap са великим Retained Size које не би требало да буду у меморији. Пређите на картицу Reference Tree да видите ланац референци које држе објекат — најчешће је то статичко поље синглтона или неочишћени колбек. Важна метрика — Allocation rate (број алокација у секунди). Ако allocation rate прелази 10 000 објеката/с, апликација троши превише времена на креирање и уклањање привремених објеката, што оптерећује GC и изазива микро-застоје. У том случају користите алатку View Inspector и пронађите места са честим креирањем објеката у петљама.

Network Profiler: праћење мрежних захтева

Network Profiler приказује све мрежне захтеве апликације у реалном времену на временској оси. Сваки захтев се приказује као хоризонтална трака — њена дужина одговара времену извршења, боја — типу захтева (GET, POST, PUT, DELETE). Померање осе омогућава да видите како су захтеви распоређени у времену и да ли се дуплирају.

Подржане су све популарне библиотеке: OkHttp, Retrofit, Volley, Ktor. За Ktor и OkHttp, профилер приказује комплетан стек позива, укључујући пресретаче (интерцепторе) и конверторе. За сваки захтев су доступна Request Headers и Response Headers, тело одговора (до 1 MB), статусни код и трајање.

Типични проблеми које открива Network Profiler: недостатак кеширања (исти URL се захтева при сваком отварању), дуплирани захтеви (две компоненте истовремено учитавају исте податке), прекомерна величина одговора (сервер шаље 5 MB када је потребно 50 KB). Network Profiler помаже да се такви проблеми виде буквално једним погледом на временску осу.

За емулацију спорих мрежа користите Network Conditioning у Android Studio — омогућава ограничавање пропусног опсега на 3G/2G и додавање кашњења. Ово је критично за тестирање понашања апликације у лошим мрежним условима, посебно за апликације које раде у регионима са нестабилним интернетом.

Energy Profiler: анализа потрошње енергије

Energy Profiler процењује утицај апликације на пуњење батерије на основу Perfetto података. Алатка не мери стварну потрошњу у милиамперима, већ класификује сваку операцију у једну од пет категорија потрошње енергије: Idle, Light, Medium, High и Overloaded. Временска оса Energy Profiler-а је осветљена бојом: зелена (лако оптерећење), жута (средње), црвена (високо).

Главни узроци појаве црвених зона: WakeLock (апликација држи процесор активним), Location GPS (константни захтеви за координатама са високом прецизношћу), Keep-Alive везе (честа размена података са сервером), велики преноси података (слање датотека, стриминг). Energy Profiler тачно показује која је операција и у ком тренутку изазвала врхунац потрошње енергије.

Према Android Developers, типична апликација не би требало да проводи више од 5% времена у категорији High. Ако Energy Profiler приказује црвене зоне дуже од 10% времена профилисања — апликација неће проћи ревизију по критеријуму Battery Drain. Препорука — користите WorkManager за позадинске задатке, ограничите Location захтеве на минимално потребну прецизност и агрегирајте мрежне захтеве у бачеве.

Како користити Android Profiler: практични водич

Покретање Android Profiler-а се врши једним кликом: у Android Studio отворите View → Tool Windows → Profiler или двапут кликните на иконицу Profiler у десном панелу. Након покретања апликације на повезаном уређају, Android Studio ће се аутоматски повезати са процесом и почети прикупљање података. На временској оси ће се одмах појавити графици CPU, Memory, Network и Energy.

За детаљну анализу изаберите одговарајућу картицу (CPU, Memory, Network или Energy) и започните снимање. За CPU препоручујем режим Sample Java Methods са трајањем снимања од 30 секунди — то је довољно за типичан сценарио. За Memory — дамп хрпе након извршења сценарија (Capture Heap Dump). За Network снимање почиње аутоматски, довољно је притиснути дугме Stop након завршетка сценарија.

Након заустављања снимања, извезите податке: File → Save As чува целу сесију у .perf датотеци. Ово је згодно за поређење метрика пре и после оптимизације. Направите baseline сесију на првој стабилној верзији и поредите сваку нову сесију са њом — то је једини начин да објективно процените промене перформанси.

Аутоматизација профилисања у CI

Android Profiler се може покренути из командне линије преко Android Studio CLI и Firebase Test Lab. Firebase Test Lab подржава профилисање перформанси као део UI тестова: добијате метрике CPU, Memory и Network заједно са резултатом теста. Подесите pipeline тако да при паду метрика за 10% у односу на baseline, CI pipeline буде блокиран до провере од стране програмера.

Често постављана питања

Да ли Android Profiler успорава рад апликације?

Утицај је минималан. Android Profiler користи Perfetto за прикупљање података, који додаје мање од 1% оптерећења CPU-а. У режиму Sample Java Methods оптерећење је око 3–5%, што је занемарљиво за профилисање сценарија. Потпуно трасирање метода може дати оптерећење до 15%, због чега се користи само за кратка снимања.

Може ли се апликација профилисати без Android Studio?

Да, системски трагови се могу снимити директно са уређаја преко Perfetto CLI: adb shell perfetto --out /data/local/tmp/trace.perf. Затим отворите датотеку у Perfetto UI интерфејсу (ui.perfetto.dev) или увезите у Android Studio за преглед са комплетним означавањем апликације.

Чим се Network Profiler разликује од Charles Proxy?

Android Profiler — је системска алатка која не захтева подешавање проксија. Приказује захтеве директно у IDE у контексту перформанси. Charles Proxy — спољни прокси сервер који пружа детаљнију анализу (пресретање саобраћаја, измена захтева, поновно слање). За профилисање перформанси користите Android Profiler, за анализу API уговора — Charles.

Како пронаћи цурење меморије кроз Memory Profiler?

Направите дамп хрпе пре извршења сценарија (нпр. пре отварања Activity). Извршите сценарио — отворите Activity и затворите је. Направите други дамп. Упоредите број живих инстанци Activity: ако их је у другом дампу више — цурење. Сортирајте по Retained Size, пронађите вишак Activity и погледајте Reference Tree да бисте утврдили узрок.

Зашто Energy Profiler није доступан на неким уређајима?

Energy Profiler захтева подршку Power Profiles на нивоу уређаја и Android 8.0+. На емулаторима и неким фирмверима (посебно кинеским) подаци могу изостати. Решење — профилишите потрошњу енергије на референтним Pixel или Samsung уређајима са чистим Android фирмвером.

Закључак

  • Android Profiler — уграђени профилер Android Studio за праћење CPU, Memory, Network и Energy.
  • CPU Profiler анализира оптерећење језгара и нити користећи Perfetto трасирање са оптерећењем мањим од 1%.
  • Memory Profiler прати Java Heap, Native Heap, Graphics и Stack са подршком за HPROF дампове.
  • Network Profiler бележи све OkHttp, Retrofit и Ktor захтеве са заглављима, телом и трајањем.
  • Energy Profiler класификује потрошњу енергије апликације од Idle до Overloaded.
  • Профилер ради без измене кода апликације — нулта интеграција.
  • Уградите профилисање у CI кроз Firebase Test Lab и чувајте baseline за свако издање.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође