Android Profiler — Android Studio-ga o‘rnatilgan, ilovalar ishlashini real vaqtda kuzatish uchun asboblar to‘plami. U CPU yuklanishi, xotira sarfi, tarmoq trafigi va energiya sarfini tashqi kutubxonalarni o‘rnatmasdan kuzatish imkonini beradi. Android Developers ma’lumotiga ko‘ra, profiler to‘g‘ridan-to‘g‘ri IDE-ga integratsiyalangan va ulangan qurilmadagi har qanday jarayon uchun millisekund aniqlikdagi ko‘rsatkichlarni taqdim etadi.
Asosiy fikrlar
Android Profiler — eskirgan Android Monitor va DDMS o‘rnini bosgan Android Studio komponenti. U ilovaning barcha jihatlarini profillash uchun yagona interfeysni taqdim etadi: protsessor tahlili uchun CPU Profiler, xotira bilan ishlash uchun Memory Profiler, tarmoq so‘rovlari uchun Network Profiler va energiya sarfi uchun Energy Profiler. Ma’lumotlar Android Studio orqali ilova ishga tushirilganda avtomatik ravishda yig‘iladi.
Profiler ham emulyatorda, ham USB orqali ulangan jismoniy qurilmada ishlaydi. Google I/O 2023 ma’lumotiga ko‘ra, Android Profiler Android loyihalarining 70% dan ortig‘ida qo‘llaniladi va ishlash diagnostikasi uchun standart vosita hisoblanadi. Tashqi echimlarga nisbatan asosiy afzallik — nol integratsiya: build.gradle-ga bog‘liqliklarni qo‘shish yoki ilova kodini o‘zgartirish shart emas.
Android Profiler arxitekturasi Perfetto — yadro va ilova darajasida ma’lumot to‘playdigan tizim treyseri asosida qurilgan. Perfetto minimal yuklamani (1% dan kam CPU) ta’minlaydi va 30 daqiqagacha uzoq muddatli yozishni qo‘llab-quvvatlaydi. Bu nafaqat tezkor operatsiyalarni, balki uzoq stsenariylarni — ekranlar o‘rtasidagi o‘tishlar, fon sinxronizatsiyasi, bir soatlik foydalanish davomida xotira sarfini profillash imkonini beradi.
Profiler to‘rt turdagi ma’lumotni to‘playdi: CPU — har bir yadro va ipning yuklanishi, Memory — Java Heap, Native Heap, Stack, Graphics, Network — barcha kiruvchi va chiquvchi so‘rovlar, Energy — energiya sarfi toifalari (Idle, Light, Medium, Heavy). Ma’lumotlar vaqt o‘qi bo‘yicha sinxronlashtirilgan — CPU o‘zgarishining xotira va energiya sarfiga qanday ta’sir qilishini bir vaqtning o‘zida ko‘rish mumkin.
CPU Profiler protsessor yuklanishini real vaqtda vaqt o‘qida, ilova iplari bo‘yicha taqsimlangan holda ko‘rsatadi. Har bir ip rangli chiziq yoki maydon bilan ifodalanadi — maydon qanchalik keng bo‘lsa, ip shuncha ko‘p protsessor vaqtini egallaydi. Qizil rangli maydonlar ilova ishini, ko‘k — tizim chaqiruvlarini, kulrang — kutishni bildiradi.
Batafsil tahlil uchun CPU Profiler uchta yozish rejimini qo‘llab-quvvatlaydi: Trace Java Methods (barcha Java metodlarini kuzatish), Trace C/C++ Functions (NDK mahalliy funksiyalarini kuzatish) va Sample Java Methods (namuna olish, tavsiya etilgan rejim). Namuna olish eng kam yuklamani beradi va kundalik profillash uchun mos keladi, to‘liq kuzatish esa murakkab muammolarni topish uchun ishlatiladi.
// Misol: CPU Profiler tahlili bu metodni bottleneck sifatida koʻrsatadi
class DataProcessor {
suspend fun processLargeDataset(items: List<Item>): List<Result> {
// CPU Profiler inBackgroundThread da yuqori CPU yuklanishini koʻrsatadi
return withContext(Dispatchers.Default) {
items.map { it.computeHeavyTransformation() }
}
}
}
// Profillashdan soʻng tavsiya:
// computeHeavyTransformation vaqtning 80% ini oladi — natijani keshlaymiz
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) } }
}
}
}
Yozishdan so‘ng CPU Profiler Top-Down Tree — har bir metodning bajarilish vaqti bilan chaqiruv daraxtini ko‘rsatadi. Self Time/Total ustuniga e’tibor bering: agar metodning Self Time qiymati 16 ms dan oshsa va UI ipidan chaqirilsa — bu kafolatlangan kadr o‘tkazib yuborishdir. Yechim — og‘ir hisoblashlarni Dispatchers.IO yoki Default orqali fon ipiga o‘tkazish.
Sample Java Methods — 3–5% yuklama bilan kundalik profillash uchun tavsiya etilgan rejim. Trace Java Methods — har bir chaqiruvning to‘liq kuzatilishi, 15% gacha yuklama, qisqa yozishlar uchun ishlatiladi (5–10 soniya). Trace C/C++ Functions — Linux Perf orqali NDK kodini kuzatish, o‘yinlar va C++ kutubxonalarini tahlil qilish uchun ajralmas. Muammo turiga qarab rejimlarni o‘zgartiring.
Memory Profiler ilovaning barcha xotira toifalarini kuzatadi: Java Heap (JVM obyektlari), Native Heap (JNI orqali C/C++ ajratmalari), Stack (ip steklari) va Graphics (teksturalar, GPU buferlari). Asosiy vizuallashtirish — har bir toifa o‘z rangi bilan ko‘rsatilgan xotira sarfining vaqt grafigi. Agar grafik axlat yig‘ishdan (GC) keyin pasaymasa — oqishdan shubhalaning.
Oqishlarni topish uchun Capture Heap Dump funksiyasidan foydalaning. Dump paytida Android Profiler ilovani ~100 ms ga to‘xtatadi va HPROF faylini — Java Heap-dagi barcha tirik obyektlarning to‘liq tasvirini yaratadi. Dumpni ochgandan so‘ng, obyektlarni Retained Size (obyekt o‘chirilganda bo‘shaydigan xotira hajmi) bo‘yicha saralashingiz va yo‘q qilinishi kerak bo‘lgan Activity, Fragment yoki Bitmap nusxalarini qidirishingiz mumkin.
Google I/O 2022 ma’lumotiga ko‘ra, Memory Profiler LeakCanary bilan birgalikda Android-da xotira oqishlarini aniqlash stsenariylarining 95% ni qamrab oladi. LeakCanary avtomatik ishlaydi — oqishni fonda aniqlaydi. Memory Profiler qo‘lda tahlil qilish uchun kerak: siz nafaqat oqishlarni, balki barcha ajratmalar tasvirini ko‘rasiz.
| Xotira toifasi | Tavsif | Odatiy hajm |
|---|---|---|
| Java Heap | JVM uyumi: Kotlin/Java obyektlari | 5–200 MB |
| Native Heap | JNI, NDK orqali ajratmalar | 1–100 MB |
| Graphics | Teksturalar, GPU buferlari | 10–200 MB |
| Stack | Barcha iplarning steklari | 1–10 MB |
Dumpni olgandan so‘ng, obyektlarni Retained Size bo‘yicha saralang — bu obyekt o‘chirilganda bo‘shaydigan xotira hajmi. Xotirada bo‘lmasligi kerak bo‘lgan katta Retained Size li Activity, Fragment va Bitmap nusxalarini qidiring. Obyektni ushlab turuvchi havolalar zanjirini ko‘rish uchun Reference Tree yorlig’iga o‘ting — ko‘pincha bu singletonning statik maydoni yoki tozalanmagan callback bo‘ladi. Muhim ko‘rsatkich — Allocation rate (soniyadagi ajratmalar soni). Agar allocation rate 10 000 obyekt/s dan oshsa, ilova vaqtinchalik obyektlarni yaratish va o‘chirishga juda ko‘p vaqt sarflaydi, bu GC ni yuklaydi va mikro qotib qolishlarga olib keladi. Bunday holda View Inspector vositasidan foydalaning va tsikllarda tez-tez obyekt yaratiladigan joylarni toping.
Network Profiler ilovaning barcha tarmoq so‘rovlarini real vaqtda vaqt o‘qida ko‘rsatadi. Har bir so‘rov gorizontal chiziq sifatida ko‘rsatiladi — uning uzunligi bajarilish vaqtiga, rangi so‘rov turiga (GET, POST, PUT, DELETE) mos keladi. O‘qni aylantirish so‘rovlarning vaqt bo‘yicha qanday taqsimlanganini va ular takrorlanadimi yoki yo‘qligini ko‘rish imkonini beradi.
Barcha mashhur kutubxonalar qo‘llab-quvvatlanadi: OkHttp, Retrofit, Volley, Ktor. Ktor va OkHttp uchun profiler interceptors va converters ni o‘z ichiga olgan to‘liq chaqiruv stekini ko‘rsatadi. Har bir so‘rov uchun Request Headers va Response Headers, javob tanasi (1 MB gacha), holat kodi va davomiylik mavjud.
Network Profiler tomonidan aniqlanadigan odatiy muammolar: keshlashning yo‘qligi (bir xil URL har ochilishda so‘raladi), takrorlanuvchi so‘rovlar (ikki komponent bir vaqtning o‘zida bir xil ma’lumotlarni yuklaydi), haddan tashqari javob hajmi (server 50 KB kerak bo‘lganda 5 MB yuboradi). Network Profiler bunday muammolarni vaqt o‘qiga bir qarashda ko‘rishga yordam beradi.
Sekin tarmoqlarni taqlid qilish uchun Android Studio-da Network Conditioning dan foydalaning — bu o‘tkazish qobiliyatini 3G/2G gacha cheklash va kechikish qo‘shish imkonini beradi. Bu, ayniqsa, beqaror internetli mintaqalarda ishlaydigan ilovalar uchun yomon tarmoq sharoitida ilova xatti-harakatini sinashda muhim ahamiyatga ega.
Energy Profiler Perfetto ma’lumotlari asosida ilovaning batareya zaryadiga ta’sirini baholaydi. Asbob haqiqiy sarfni milliamperda o‘lchamaydi, balki har bir operatsiyani beshta energiya sarfi toifasidan biriga tasniflaydi: Idle, Light, Medium, High va Overloaded. Energy Profiler ning vaqt o‘qi rang bilan yoritiladi: yashil (engil yuk), sariq (o‘rta), qizil (yuqori).
Qizil zonalarning paydo bo‘lishining asosiy sabablari: WakeLock (ilova protsessorni faol ushlab turadi), Location GPS (yuqori aniqlikdagi doimiy koordinata so‘rovlari), Keep-Alive ulanishlari (server bilan tez-tez ma’lumot almashish), katta ma’lumot uzatishlari (fayl yuborish, striming). Energy Profiler qaysi operatsiya qaysi vaqtda energiya sarfi cho‘qqisini keltirib chiqarganini aniq ko‘rsatadi.
Android Developers ma’lumotiga ko‘ra, odatiy ilova vaqtining 5% dan ko‘pini High toifasida o‘tkazmasligi kerak. Agar Energy Profiler qizil zonalarni profillash vaqtining 10% dan ko‘prog‘ini ko‘rsatsa — ilova Battery Drain mezoni bo‘yicha ko‘rib chiqishdan o‘tmaydi. Tavsiya — fon vazifalari uchun WorkManager dan foydalaning, Location so‘rovlarini minimal talab qilinadigan aniqlik bilan cheklang va tarmoq so‘rovlarini batchlarda birlashtiring.
Android Profiler-ni ishga tushirish bir marta bosish bilan amalga oshiriladi: Android Studio-da View → Tool Windows → Profiler ni oching yoki o‘ng paneldagi Profiler belgisini ikki marta bosing. Ilova ulangan qurilmada ishga tushirilgandan so‘ng, Android Studio avtomatik ravishda jarayonga ulanadi va ma’lumot yig‘ishni boshlaydi. Vaqt o‘qida darhol CPU, Memory, Network va Energy grafiklari paydo bo‘ladi.
Batafsil tahlil uchun kerakli yorliqni (CPU, Memory, Network yoki Energy) tanlang va yozishni boshlang. CPU uchun 30 soniya yozish davomiyligi bilan Sample Java Methods rejimini tavsiya qilaman — bu odatiy stsenariy uchun etarli. Memory uchun — stsenariyni bajarganingizdan so‘ng uyum dumpi (Capture Heap Dump). Network uchun yozish avtomatik ravishda boshlanadi, stsenariy tugagandan so‘ng Stop tugmasini bosish kifoya.
Yozishni to‘xtatgandan so‘ng, ma’lumotlarni eksport qiling: File → Save As butun seansni .perf faylida saqlaydi. Bu optimallashtirishdan oldin va keyin ko‘rsatkichlarni solishtirish uchun qulay. Birinchi barqaror versiyada baseline seansini yarating va har bir yangi seansni u bilan solishtiring — bu ishlash o‘zgarishlarini ob’ektiv baholashning yagona usuli.
Android Profiler buyruq satridan Android Studio CLI va Firebase Test Lab orqali ishga tushirilishi mumkin. Firebase Test Lab UI testlarining bir qismi sifatida ishlash profillashni qo‘llab-quvvatlaydi: siz test natijasi bilan birga CPU, Memory va Network ko‘rsatkichlarini olasiz. Pipeline-ni shunday sozlangki, ko‘rsatkichlar baseline ga nisbatan 10% ga tushganda, CI pipeline dasturchi tomonidan tekshirilgunga qadar bloklansin.
Tez-tez so‘raladigan savollar
Ta’sir minimal. Android Profiler ma’lumot yig‘ish uchun Perfetto dan foydalanadi, u CPU ga 1% dan kam yuklama qo‘shadi. Sample Java Methods rejimida yuklama taxminan 3–5% ni tashkil qiladi, bu stsenariy profillash uchun ahamiyatsiz. Metodlarning to‘liq kuzatilishi 15% gacha yuklama berishi mumkin, shuning uchun u faqat qisqa yozishlar uchun ishlatiladi.
Ha, tizim treyslarini to‘g‘ridan-to‘g‘ri qurilmadan Perfetto CLI orqali yozib olish mumkin: adb shell perfetto --out /data/local/tmp/trace.perf. Keyin faylni Perfetto UI (ui.perfetto.dev) interfeysida oching yoki to‘liq ilova belgilari bilan ko‘rish uchun Android Studio-ga import qiling.
Android Profiler — proksi sozlamalarini talab qilmaydigan tizim vositasidir. So‘rovlarni to‘g‘ridan-to‘g‘ri IDE da ishlash kontekstida ko‘rsatadi. Charles Proxy — batafsilroq tahlilni ta’minlaydigan tashqi proksi-server (trafikni ushlash, so‘rovlarni o‘zgartirish, qayta yuborish). Ishlash profillash uchun Android Profiler, API shartnomalarini tahlil qilish uchun Charles dan foydalaning.
Stsenariyni bajarishdan oldin (masalan, Activity ni ochishdan oldin) uyum dumpini oling. Stsenariyni bajaring — Activity ni oching va yoping. Ikkinchi dumpni oling. Tirik Activity nusxalari sonini solishtiring: agar ikkinchi dumpda ko‘proq bo‘lsa — oqish. Retained Size bo‘yicha saralang, ortiqcha Activity larni toping va sababni aniqlash uchun Reference Tree ni tekshiring.
Energy Profiler qurilma darajasida Power Profiles qo‘llab-quvvatlashi va Android 8.0+ ni talab qiladi. Emulyatorlarda va ba’zi firmware larda (ayniqsa Xitoy) ma’lumotlar mavjud bo‘lmasligi mumkin. Yechim — energiya sarfini toza Android firmware li mos yozuvlar Pixel yoki Samsung qurilmalarida profillang.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.