Android Profiler — Android Studio-ya daxil olan, proqramların performansını real vaxtda izləmək üçün alətlər dəstidir. CPU yükünü, yaddaş istehlakını, şəbəkə trafikini və enerji sərfiyyatını xarici kitabxanalar quraşdırmadan izləməyə imkan verir. Android Developers məlumatına görə, profiler birbaşa IDE-yə inteqrasiya olunub və qoşulmuş cihazdakı istənilən proses üçün millisaniyə dəqiqliyi ilə metrikalar təqdim edir.
Əsas məqamlar
Android Profiler — köhnəlmiş Android Monitor və DDMS-ni əvəz edən Android Studio komponentidir. Proqramın bütün aspektlərinin profilləşdirilməsi üçün vahid interfeys təqdim edir: prosessor analizi üçün CPU Profiler, yaddaşla iş üçün Memory Profiler, şəbəkə sorğuları üçün Network Profiler və enerji istehlakı üçün Energy Profiler. Məlumatlar Android Studio vasitəsilə proqram işə salındıqda avtomatik toplanır.
Profiler həm emulyatorda, həm də USB ilə qoşulmuş fiziki cihazda işləyir. Google I/O 2023 məlumatına görə, Android Profiler Android layihələrinin 70%-dən çoxunda istifadə olunur və performans diaqnostikası üçün standart alət sayılır. Xarici həllərlə müqayisədə əsas üstünlük — sıfır inteqrasiya: build.gradle-ə asılılıq əlavə etmək və ya proqram kodunu dəyişdirmək lazım deyil.
Android Profiler-in arxitekturası Perfetto — nüvə və proqram səviyyəsində məlumat toplayan sistem traceri üzərində qurulub. Perfetto minimal yük (1%-dən az CPU) təmin edir və 30 dəqiqəyə qədər uzunmüddətli yazmağı dəstəkləyir. Bu, təkcə sürətli əməliyyatları deyil, həm də uzun ssenariləri — ekranlar arası keçidləri, fon sinxronizasiyasını, bir saatlıq istifadə ərzində yaddaş istehlakını profilləşdirməyə imkan verir.
Profiler dörd növ məlumat toplayır: CPU — hər nüvə və ipin yükü, Memory — Java Heap, Native Heap, Stack, Graphics, Network — bütün daxil olan və çıxan sorğular, Energy — enerji istehlakı kateqoriyaları (Idle, Light, Medium, Heavy). Məlumatlar zaman xətti üzrə sinxronlaşdırılır — CPU dəyişikliyinin yaddaşa və enerji istehlakına necə təsir etdiyini eyni anda görmək olar.
CPU Profiler prosessor yükünü real vaxtda zaman xəttində, proqram ipləri üzrə bölünmüş şəkildə göstərir. Hər ip rəngli xətt və ya sahə ilə təmsil olunur — sahə nə qədər genişdirsə, ip bir o qədər çox prosessor vaxtı tutur. Qırmızı rəngli sahələr proqramın işini, mavi — sistem çağırışlarını, boz — gözləməni bildirir.
Ətraflı analiz üçün CPU Profiler üç yazma rejimini dəstəkləyir: Trace Java Methods (bütün Java metodlarının trac edilməsi), Trace C/C++ Functions (NDK yerli funksiyalarının trac edilməsi) və Sample Java Methods (nümunə götürmə, tövsiyə olunan rejim). Nümunə götürmə ən az yük verir və gündəlik profilləşdirmə üçün uyğundur, tam trac isə mürəkkəb problemlərin axtarışı üçündür.
// Nümunə: CPU Profiler analizi bu metodu bottleneck kimi göstərəcək
class DataProcessor {
suspend fun processLargeDataset(items: List<Item>): List<Result> {
// CPU Profiler inBackgroundThread-da yüksək CPU yükünü göstərəcək
return withContext(Dispatchers.Default) {
items.map { it.computeHeavyTransformation() }
}
}
}
// Profilləşdirmədən sonra tövsiyə:
// computeHeavyTransformation vaxtın 80%-ni tutur — nəticəni keşləyirik
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) } }
}
}
}
Yazmadan sonra CPU Profiler Top-Down Tree — hər metodun icra müddəti ilə çağırış ağacını göstərir. Self Time/Total sütununa diqqət yetirin: metodun Self Time dəyəri 16 ms-dən çoxdursa və UI ipindən çağırılırsa — bu, zəmanətli kadr buraxılmasıdır. Həll yolu — ağır hesablamaları Dispatchers.IO və ya Default vasitəsilə fon ipinə köçürmək.
Sample Java Methods — 3–5% yük ilə gündəlik profilləşdirmə üçün tövsiyə olunan rejim. Trace Java Methods — hər çağırışın tam trac edilməsi, 15%-ə qədər yük, qısa yazmalar üçün istifadə olunur (5–10 saniyə). Trace C/C++ Functions — Linux Perf vasitəsilə NDK kodunun trac edilməsi, oyunların və C++ kitabxanalarının analizi üçün əvəzolunmazdır. Problemin növündən asılı olaraq rejimləri dəyişin.
Memory Profiler proqramın bütün yaddaş kateqoriyalarını izləyir: Java Heap (JVM obyektləri), Native Heap (JNI vasitəsilə C/C++ alokasiyaları), Stack (ip yığınları) və Graphics (teksturlar, GPU buferləri). Əsas vizuallaşdırma — hər kateqoriyanın öz rəngi ilə göstərildiyi yaddaş istehlakının zaman qrafikidir. Qrafik zibil yığımından (GC) sonra azalmırsa — sızıntıdan şübhələnin.
Sızıntıları tapmaq üçün Capture Heap Dump funksiyasından istifadə edin. Zərb anında Android Profiler proqramı ~100 ms dayandırır və HPROF faylı — Java Heap-dəki bütün canlı obyektlərin tam şəklini yaradır. Zərbi açdıqdan sonra obyektləri Retained Size (obyekt silindikdə azad olunacaq yaddaş həcmi) üzrə çeşidləyə və məhv edilməli olan Activity, Fragment və ya Bitmap nümunələrini axtara bilərsiniz.
Google I/O 2022 məlumatına görə, Memory Profiler LeakCanary ilə birlikdə Android-də yaddaş sızıntılarının aşkarlanması ssenarilərinin 95%-ni əhatə edir. LeakCanary avtomatik işləyir — sızıntını fonda aşkarlayır. Memory Profiler əl analizi üçün lazımdır: yalnız sızıntıları deyil, bütün alokasiya mənzərəsini görürsünüz.
| Yaddaş kateqoriyası | Təsvir | Tipik ölçü|
|---|---|---|
| Java Heap | JVM yığını: Kotlin/Java obyektləri | 5–200 MB |
| Native Heap | JNI, NDK vasitəsilə alokasiyalar | 1–100 MB |
| Graphics | Teksturlar, GPU buferləri | 10–200 MB |
| Stack | Bütün iplərin yığınları | 1–10 MB |
Zərbi əldə etdikdən sonra obyektləri Retained Size üzrə çeşidləyin — bu, obyekt silindikdə azad olunacaq yaddaş həcmidir. Yaddaşda olmamalı olan böyük Retained Size-li Activity, Fragment və Bitmap nümunələrini axtarın. Obyekti saxlayan istinad zəncirini görmək üçün Reference Tree sekmesine keçin — ən çox bu, sinqltonun statik sahəsi və ya təmizlənməmiş callback olur. Vacib metrika — Allocation rate (saniyədə alokasiya sayı). Allocation rate 10 000 obyekt/san-dən çox olarsa, proqram müvəqqəti obyektlərin yaradılmasına və silinməsinə çox vaxt sərf edir, bu da GC-ni yükləyir və mikro donmalara səbəb olur. Bu halda View Inspector alətindən istifadə edin və dövrlərdə tez-tez obyekt yaradılan yerləri tapın.
Network Profiler proqramın bütün şəbəkə sorğularını real vaxtda zaman xəttində göstərir. Hər sorğu üfüqi zolaq şəklində göstərilir — uzunluğu icra müddətinə, rəngi sorğunun növünə (GET, POST, PUT, DELETE) uyğun gəlir. Zaman xəttini sürüşdürmək sorğuların zamanla necə paylandığını və təkrarlanıb-təkrarlanmadığını görməyə imkan verir.
Bütün populyar kitabxanalar dəstəklənir: OkHttp, Retrofit, Volley, Ktor. Ktor və OkHttp üçün profiler interceptorlar və konvertorlar daxil olmaqla tam çağırış yığınını göstərir. Hər sorğu üçün Request Headers və Response Headers, cavab məzmunu (1 MB-a qədər), status kodu və müddət mövcuddur.
Network Profiler tərəfindən aşkarlanan tipik problemlər: keşləmənin olmaması (eyni URL hər açılışda sorğulanır), təkrarlanan sorğular (iki komponent eyni vaxtda eyni məlumatları yükləyir), həddindən artıq cavab ölçüsü (server 50 KB lazım olanda 5 MB göndərir). Network Profiler bu kimi problemləri zaman xəttinə bir baxışda görməyə kömək edir.
Yavaş şəbəkələrin emulyasiyası üçün Android Studio-da Network Conditioning istifadə edin — bu, ötürmə qabiliyyətini 3G/2G səviyyəsinə məhdudlaşdırmağa və gecikmə əlavə etməyə imkan verir. Bu, xüsusilə qeyri-sabit interneti olan regionlarda işləyən proqramlar üçün pis şəbəkə şəraitində proqram davranışını test etmək üçün kritik əhəmiyyətlidir.
Energy Profiler Perfetto məlumatları əsasında proqramın batareya yükünə təsirini qiymətləndirir. Alət faktiki sərfiyyatı milliampermlə ölçmür, hər əməliyyatı beş enerji istehlakı kateqoriyasından birinə təsnif edir: Idle, Light, Medium, High və Overloaded. Energy Profiler-in zaman xətti rənglə işıqlandırılır: yaşıl (yüngül yük), sarı (orta), qırmızı (yüksək).
Qırmızı zonaların yaranmasının əsas səbəbləri: WakeLock (proqram prosessoru aktiv saxlayır), Location GPS (yüksək dəqiqliklə daimi koordinat sorğuları), Keep-Alive birləşmələri (serverlə tez-tez məlumat mübadiləsi), böyük məlumat ötürmələri (fayl göndərmə, striminq). Energy Profiler hansı əməliyyatın hansı anda enerji istehlakı pikini yaratdığını dəqiq göstərir.
Android Developers məlumatına görə, tipik proqram vaxtının 5%-dən çoxunu High kateqoriyasında keçirməməlidir. Energy Profiler qırmızı zonaları profilləşdirmə vaxtının 10%-dən çox göstərirsə — proqram Battery Drain meyarı üzrə review-dən keçməyəcək. Tövsiyə — fon tapşırıqları üçün WorkManager istifadə edin, Location sorğularını minimal tələb olunan dəqiqliklə məhdudlaşdırın və şəbəkə sorğularını batch-lərdə birləşdirin.
Android Profiler bir kliklə işə salınır: Android Studio-da View → Tool Windows → Profiler açın və ya sağ paneldə Profiler ikonasına iki dəfə klikləyin. Proqram qoşulmuş cihazda işə salındıqdan sonra Android Studio avtomatik olaraq prosesə qoşulacaq və məlumat toplamağa başlayacaq. Zaman xəttində dərhal CPU, Memory, Network və Energy qrafikləri görünəcək.
Ətraflı analiz üçün lazımi sekmeni (CPU, Memory, Network və ya Energy) seçin və yazmağa başlayın. CPU üçün 30 saniyə yazma müddəti ilə Sample Java Methods rejimini tövsiyə edirəm — bu tipik ssenari üçün kifayətdir. Memory üçün — ssenarini icra etdikdən sonra yığın zərbi (Capture Heap Dump). Network üçün yazma avtomatik başlayır, ssenari bitdikdən sonra Stop düyməsini sıxmaq kifayətdir.
Yazmanı dayandırdıqdan sonra məlumatları ixrac edin: File → Save As bütün seansı .perf faylında saxlayır. Bu, optimallaşdırmadan əvvəl və sonra metrikaları müqayisə etmək üçün əlverişlidir. İlk stabil versiyada baseline seansı yaradın və hər yeni seansı onunla müqayisə edin — bu, performans dəyişikliklərini obyektiv qiymətləndirməyin yeganə yoludur.
Android Profiler komanda sətirindən Android Studio CLI və Firebase Test Lab vasitəsilə işə salına bilər. Firebase Test Lab UI testlərinin bir hissəsi kimi performans profilləşdirməsini dəstəkləyir: test nəticəsi ilə birlikdə CPU, Memory və Network metrikalarını alırsınız. Pipeline-ı elə konfiqurasiya edin ki, metrikalar baseline-a nisbətən 10% düşərsə, CI pipeline tərtibatçı tərəfindən yoxlanılana qədər bloklansın.
Tez-tez verilən suallar
Təsir minimaldır. Android Profiler məlumat toplamaq üçün Perfetto-dan istifadə edir, bu da CPU-ya 1%-dən az yük əlavə edir. Sample Java Methods rejimində yük təxminən 3–5% təşkil edir ki, bu da ssenari profilləşdirməsi üçün əhəmiyyətsizdir. Metodların tam trac edilməsi 15%-ə qədər yük verə bilər, buna görə də yalnız qısa yazmalar üçün istifadə olunur.
Bəli, sistem trac-larını birbaşa cihazdan Perfetto CLI vasitəsilə yazmaq olar: adb shell perfetto --out /data/local/tmp/trace.perf. Sonra faylı Perfetto UI (ui.perfetto.dev) interfeysində açın və ya proqramın tam işarələməsi ilə baxmaq üçün Android Studio-ya idxal edin.
Android Profiler — proksi konfiqurasiyası tələb etməyən sistem alətidir. Sorğuları birbaşa IDE-də performans kontekstində göstərir. Charles Proxy — daha ətraflı analiz təmin edən xarici proksi-serverdir (trafikin ələ keçirilməsi, sorğuların dəyişdirilməsi, təkrar göndərilmə). Performans profilləşdirməsi üçün Android Profiler, API kontraktlarının analizi üçün Charles istifadə edin.
Ssenarini icra etməzdən əvvəl (məsələn, Activity-ni açmazdan əvvəl) yığın zərbi edin. Ssenarini icra edin — Activity-ni açın və bağlayın. İkinci zərb edin. Canlı Activity nümunələrinin sayını müqayisə edin: ikinci zərbdə daha çoxdursa — sızıntı. Retained Size üzrə çeşidləyin, artıq Activity-ləri tapın və səbəbi müəyyən etmək üçün Reference Tree-yə baxın.
Energy Profiler cihaz səviyyəsində Power Profiles dəstəyi və Android 8.0+ tələb edir. Emulyatorlarda və bəzi firmware-lərdə (xüsusilə Çin) məlumatlar olmaya bilər. Həll yolu — təmiz Android firmware olan istinad Pixel və ya Samsung cihazlarında enerji istehlakını profilləşdirmək.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun