
Kad Android lietotne darbojas lēni, raustās vai tās animācijas ir saraustītas (atspējot sistēmas animācijas)Gandrīz vienmēr fonā slēpjas kāds slēpts vaininieks: latentums un baisā kaite. Android piedāvā vairākus diagnostikas rīkus, taču viens no jaudīgākajiem un elastīgākajiem ir perfettoapvienojumā ar klasisko komandu dumpsys un datu avoti, piemēram, ftrace, atrace o heapprofdIzpratne par to pareizu lietošanu ļauj pāriet no neskaidras sajūtas "mana lietotne darbojas dīvaini" uz konkrētiem skaitļiem, pēdām un cēloņiem.
Šajā rakstā mēs mierīgi, bet tieši visu sakārtosim., kā tas darbojas perfetto Kādi ir Android ierīces lietošanas režīmi, kādus datu avotus tā var aktivizēt un kā tā papildina citas taustiņu komandas, piemēram, dumpsys gfxinfo, dumpsys meminfo o dumpsys batterystatsIdeja ir sniegt jums pilnīgu pārskatu par visu, ko varat izmērīt, un to, kā to izmantot, lai optimizētu latentumu, novērstu traucējumus un, starp citu, uzlabotu atmiņas, tīkla un akumulatora patēriņu.
Kas ir Perfetto un kāpēc tas ir tik noderīgs latentuma un kļūdu gadījumā?
perfetto Tas ir veiktspējas izsekošanas rīks, kas integrēts operētājsistēmā Android. kas parasti tiek izsaukts no datora, izmantojot Android Debug Bridge (ADB) ar tādām komandām kā adb shell perfetto ...Tās uzdevums ir apkopot zema līmeņa informāciju par to, kas notiek ierīcē: kodola aktivitātes, lietotāju anotācijas, atmiņas izmantošanu, procesa statistiku utt., visu izsekošanas formātā, ko pēc tam var analizēt ar skatītājiem, piemēram, tīmekļa vietni. perfetto.dev.
Perfetto izmanto vairākus specializētus “datu avotus”, starp kuriem stends:
ftrace, kas fiksē kodola notikumus (pavedienu plānošanu, failu sistēmu utt.).atrace, koncentrējoties uz anotācijām no lietotāju vides pakalpojumiem un lietojumprogrammām.heapprofd, koncentrējoties uz vietējās atmiņas izmantošanas izlasi pakalpojumos un lietotnēs.
Pareizi apvienojot šos avotusVarat ierakstīt tieši to informāciju, kas nepieciešama, lai izsekotu lietotāja interfeisa latentuma problēmas, izlaistos kadrus, centrālā procesora jaudas pieaugumus vai ar I/O saistītas bloķēšanas. UFS krātuve.

Perfetto pamata sintakse un darbības režīmi
Perfetto var izmantot divos galvenajos režīmos: vieglā un normālāAbi tiek izsaukti no ADB, taču tie ievērojami atšķiras pēc tā, kā tie konfigurē attēloto un kā tas tiek saglabāts.
Vispārējā ideja vienmēr ir viena un tā pati: izpildīt komandu adb shell perfetto norādot ilgumu, bufera lielumu, datu avotus un izvades izsekošanas failu. Iegūtais fails parasti tiek ģenerēts, ievērojot protokola formātu. trace.proto no AOSP, kuru pēc tam var atvērt Perfetto analīzes rīkos.
Vispārīgas opcijas, izsaucot Perfetto
Neatkarīgi no režīma (viegls vai normāls)Ir vairāki izplatīti karodziņi, kas kontrolē, kā tiek izpildīta tveršana, kas tiek darīts ar ģenerēto failu un kā tā tiek integrēta ar brīdināšanas vai attālās augšupielādes sistēmām:
--backgroundo-d: padaraperfettoIzejiet no komandrindas saskarnes un turpiniet ierakstīšanu fonā.--background-waito-DLīdzīgi kā iepriekšējais, bet gaida līdz 30 sekundēm, lai visi datu avoti apstiprinātu to palaišanu. Izejas kods būs 0, ja viss darbojas pareizi, un jebkāds cits nekā 0, ja ir radusies kļūda vai taimauts.--alert-id,--config-id,--config-uidy--subscription-id: identifikatori, kas saista izsekošanu ar brīdinājumiem vai aktivizētāju konfigurācijām definēts sistēmā, noderīgs automatizētās uzraudzības scenārijos.--out OUT_FILEo-o OUT_FILE: pilns ceļš, kur tiks saglabāts izsekošanas fails, vai-ja vēlaties, lai es eju uzstdoutKatalogs parasti tiek izmantots kā/data/misc/perfetto-traces.--upload: pēc uztveršanas pabeigšanas nogādājiet izsekošanas failu ziņojumā norādītajā paketēIncidentReportConfigprototipa konfigurācijā.--no-guardrailsy--reset-guardrails: Viņi kontrolē drošības mehānismus un resursu ierobežojumus kad ir aktivizēta automātiskā augšupielāde (--upload), kas paredzēts testēšanai, nevis tik daudz ražošanai.--rsave-for-bugreport: ja uztveršanai irbugreport_scorelielāks par 0, saglabā izsekošanas datus failā un pēc pabeigšanas parāda ceļu, lai tos varētu viegli pievienot kļūdu ziņojumiem.--queryy--query-rawTie vaicā izsekošanas pakalpojuma statusu. Pirmais nodrošina lasāmu izvadi, otrais atgriež protokola saturu.tracing_service_state.proto.--helpo-h: Izdrukā rīka iebūvēto palīdzību.
Perfetto gaišais režīms: ātrs un līdzīgs Systrace režīmam
Perfetto gaismas režīms ir paredzēts ātrām trasēmļoti līdzīgi tam, kā tas tika izmantots vēsturiski systraceTas ļauj atlasīt tikai pamata avotu apakškopu: būtībā atrace y ftraceun tas ir noderīgi līdzās lietotnes, lai optimizētu veiktspēju.
Tipiska sintakse vieglās lietošanas režīmā Tas ir kaut kas līdzīgs šim:
adb shell perfetto ... --out FILE
Starp atbilstošākajām gaismas režīma īpašajām opcijām mēs atradām:
--time TIMEo-t TIME: izsekošanas ilgums sekundēs, minūtēs vai stundās. Piemēram,--time 1mUzņemt vienu minūti. Ja nekas nav norādīts, pēc noklusējuma tiek izmantotas 10 sekundes.--buffer SIZEo-b SIZE: apļveida bufera lielums atmiņā. Noklusējuma vērtība parasti ir kaut kas līdzīgs--buffer 32mb.--size SIZEo-s SIZEMaksimālais faila lieluma ierobežojums diskā. Ja tas nav konfigurēts, Perfetto var rakstīt tikai atmiņas buferī.--appo-a: Android lietotnes pakotnes nosaukums, kas jāizmanto anotācijāsatrace.
Pēc šiem karogiem ir uzskaitīti “notikumu specifikatori”.kas nosaka, kuras kategorijas vai notikumi tiks reģistrēti:
ATRACE_CATkategorijasatraceko vēlaties aktivizēt (piemēram,wm(WindowManager). Tipiska komanda būtu šāda:adb shell perfetto --out FILE wm.FTRACE_GROUP/FTRACE_NAMEkonkrēti notikumiftraceKāsched/sched_switchJūs varētu palaist:adb shell perfetto --out FILE sched/sched_switch.
Perfetto parastais režīms: maksimāla kontrole un vairāk avotu
Perfetto parastais režīms ir daudz jaudīgāks un konfigurējamāks.Tā vietā, lai nodotu atsevišķas kategorijas, jums tiek dots konfigurācijas fails (proto), kurā detalizēti aprakstīts, kurus datu avotus aktivizēt, kā veikt izlasi, kurus buferus izmantot utt.
Parastā sintakse normālajam režīmam ir:
adb shell perfetto --config CONFIG_FILE --out FILE
Konkrētie karodziņi, kas ir svarīgi šajā režīmā skaņa:
--config CONFIG_FILEo-c CONFIG_FILE: ceļš uz konfigurācijas failu, kas atbilst shēmaitrace_config.protoAOSP. Šajā prototipā ir iekļauti tādi elementi kāTraceConfigyDataSourceConfig(definētsdata_source_config.proto), lai atlasītu un parametrizētu datu avotus.--txt: norāda, ka konfigurācijas fails ir teksta formātāpbtxtbinārā vietā. Ļoti ērti lokālai prototipēšanai, bet nav ieteicams kā galīgās ražošanas formāts.
Pilnīgi saderīgi datu avoti
Perfetto patiesais spēks slēpjas dažādajos resursos, ko tas var nodrošināt.Katrs no tiem tiek konfigurēts no prototipa, izmantojot bloku DataSourceConfigUn atkarībā no ierīces, Android versijas un kodola jums būs pieejamas vairāk vai mazāk iespēju.

Kodola notikumi ar ftrace
Strūklaka ftrace Perfetto ļauj uztvert iekšējos kodola notikumuskas ir tīrs zelts, ja vēlaties saprast, kāpēc pavediens netiek ieplānots laikā vai kas jebkurā brīdī bloķē centrālo procesoru.
Lai aktivizētu ftrace no iestatījumiem lauks ir jādefinē ftrace_config ietvaros DataSourceConfig...atlasot, kurus konkrētos notikumus vēlamies izsekot. Daži izplatīti piemēri, kas saistīti ar procesu plānošanu, ir šādi:
sched/sched_switchsched/sched_wakeupsched/sched_wakeup_newsched/sched_process_execsched/sched_process_exitsched/sched_process_forksched/sched_process_freesched/sched_process_hangsched/sched_process_wait
Var iespējot arī failu sistēmas notikumus un atpakaļizsekošanas anotācijas.lai vienā izsekošanas reizē tiktu uztverti gan kodola dati, gan augstāka līmeņa notikumi. Faktisko notikumu saraksts vienmēr būs atkarīgs no ierīces un tās kodola, tāpēc ieteicams iepazīties ar attiecīgajiem konfigurācijas protokoliem.
Procesu un sistēmu statistika
Vēl viens ļoti praktisks avots ir procesu statistika un pati sistēma.Tas ļauj iegūt periodiskus resursu izmantošanas skaitītājus gan globāli, gan katram atsevišķam procesam, kas ir ideāli piemērots centrālā procesora vai atmiņas pieauguma korelācijai ar konkrētiem jank notikumiem un ar fona lietotnes.
Lai to izmantotu, ir jākonfigurē lauki. process_stats_config y sys_stats_config ietvaros DataSourceConfigIegūtie dati cita starpā ietver informāciju par centrālā procesora laiku, atmiņas izmantošanu un citiem rādītājiem, kas var atšķirties atkarībā no ierīces un operētājsistēmas versijas.
Vietējie atmiņas profili ar heapprofd
heapprofd Tā ir galvenā sastāvdaļa, kad nepieciešams saprast vietējās atmiņas izmantošanu. jūsu lietojumprogrammas vai sistēmas pakalpojumu. Tas darbojas, veicot izlasi, ģenerējot profilus, kas norāda, kuras koda daļas rezervē atmiņu.
Gaismā heapprofd Perfetto pēdās Jums jāaizpilda sadaļa heapprofd_config de DataSourceConfig. Rezultāts ir ProfilePackets ar izsaukumu steka informāciju, tostarp Java ietvariem, ja tādi ir pieejami. Tas ir spēcīgs veids, kā meklēt vietējās noplūdes vai neefektīvus piešķiršanas modeļus.
Publiskā dokumentācija perfetto.dev Tajā ir iedziļināti aplūkots, kā konfigurēt šos profilus, filtrēt pēc konkrētiem procesiem, pielāgot paraugu ņemšanas frekvenci utt., ļaujot pielāgot instrumentācijas izmaksas nepieciešamajam detalizācijas līmenim.
Citi papildu datu avoti
Papildus iepriekšminētajam ir pieejami arī citi avoti atkarībā no ierīces un Android versijas.Daži ir vērsti uz enerģiju, citi uz tīklu vai specifiskākiem ietvara metrikām. Lai tos detalizēti aplūkotu, jāpārskata dažādas Perfetto datu avotu konfigurācijas shēmas, kas publicētas AOSP.
Jebkurā gadījumā modelis vienmēr atkārtojasJūs izvēlaties avotu, jūs konfigurējat tā bloku DataSourceConfig prototipā TraceConfig un jūs palaižat izsekošanu ar perfettoPēc tam iegūto failu analizējat ar vizualizācijas rīkiem.
dumpsys: ideāls spraudnis latentuma un veiktspējas mērīšanai
Lai gan Perfetto ir zema līmeņa pēdu zvaigzneveterāna instruments dumpsys Tas joprojām ir svarīgi, ja vēlaties augsta līmeņa diagnostiku, kas sagrupēta pēc sistēmas pakalpojuma: ievade, grafika, tīkls, akumulators, atmiņa utt.
dumpsys Tas darbojas Android ierīcē. un to izsauc no ADB ar tādām komandām kā adb shell dumpsysJa to palaižat bez parametriem, tas izvada informāciju no visiem sistēmas pakalpojumiem, kas parasti ir pārmērīgi. Vislabāk ir norādīt konkrēto pakalpojumu, kas jūs interesē, lai koncentrētos tikai uz šo daļu.
Dumpsys komandas vispārīgā sintakse
Vispārīgs veids, kā zvanīt dumpsys ir:
adb shell dumpsys | -c | -h]
Daži izplatīti lietojumi varētu:
adb shell dumpsys: atceļ visus pakalpojumus (ļoti daudzvārdīgs).adb shell dumpsys input: ievades sistēmas statuss (klaviatūras, skārienekrāni utt.).adb shell dumpsys -l: uzskaitīt visus pieejamos pakalpojumus.
Starp galvenajām komandrindas opcijām izcelties:
-t timeout: maksimālais laiks sekundēs, kas piešķirtsdumpsyslai pabeigtu darbību (pēc noklusējuma — 10 s).--help: vispārīga rīka palīdzība.-l: sistēmas pakalpojumu saraksts.--skip services: norāda vienu vai vairākus pakalpojumus, kurus vēlaties izslēgt no izvades, ja nenorādāt nevienu konkrētu pakalpojumu.serviceNorādiet konkrēto pakalpojumu, kuru vēlaties pārbaudīt, izmantojot papildu argumentus. Ja neesat pārliecināts, daudzi pakalpojumi pieņem-hlai parādītu savu palīdzību, piemēramadb shell dumpsys procstats -h.-c: liek noteiktiem pakalpojumiem atgriezt datus formātā, kas ir piemērotāks skriptu vai rīku patēriņam.-hDažos pakalpojumos tiek parādīta īpaša papildu palīdzība.
Ievades diagnostika: pieskārieni, taustiņsitieni un notikumu latentums
Latentuma problēmām, kas saistītas ar skārienekrāniem vai tastatūras ievadiGalvenais pakalpojums ir input. Ar adb shell dumpsys input Jūs saņemat ievades ierīču stāvokļa un notikumu plūsmas izgāztuvi no to ģenerēšanas brīža līdz brīdim, kad tie sasniedz logus.
Izvade ietver trīs svarīgus loģiskos blokus: notikumu centra statuss, statuss InputReader un stāvoklis InputDispatcherKatrs no tiem palīdz atklāt trūkumus pasākuma norises posmā.
Notikumu centrs: pieejamās ierīces un to konfigurācija
“Notikumu centra stāvoklis” uzskaita visas ievades ierīces, par kurām sistēma zina., ar informāciju, piemēram, ierīces ceļu, klasi, taustiņu izkārtojuma failiem, atslēgu rakstzīmēm un konfigurāciju, kā arī iebūvēto tastatūras identifikatoru (BuiltInKeyboardId).
Pārskatot šo sadaļu, ieteicams pārbaudīt:
- Ka visas paredzētās fiziskās ierīces ir pareizi uzskaitītas.
- Katrai taustiņai ir savs piešķirtais taustiņu izkārtojuma fails, rakstzīmju karte un konfigurācijas fails; ja to trūkst vai tajos ir sintakses kļūdas, tie netiks ielādēti un ievades pieredze cietīs.
- Ka lauks
Classesir atbilstoši biti, kas piesaistīti konstantēm, piemēram,INPUT_DEVICE_CLASS_TOUCH_MTenEventHub.h. - Ka
BuiltInKeyboardIdjūra-2Ja nav integrētas tastatūras vai citādi saskaņojiet iekšējo tastatūras ID. Ja redzat, ka tā nav-2Un tam tā arī jābūt; iespējams, trūkst kādas funkciju tastatūras speciālās rakstzīmju kartes, kurai vajadzētu saturēt tikaitype SPECIAL_FUNCTION.
InputReader: Kā tiek interpretēti ievades notikumi
InputReader Tas ir atbildīgs par zema līmeņa kodola notikumu "tulkošanu". uz kaut ko tādu, ko ietvars var saprast: pieskāriena koordinātas, spiediens, pieskāriena izmērs utt. Tās izgāztuvē redzēsiet katras ierīces (piemēram, konkrēta skārienekrāna) detalizētu konfigurāciju un pēdējās veiktās darbības.
Skārienekrānu gadījumā ir svarīgi pārbaudīt:
- X un Y diapazoni (minimumi, maksimumi, precizitāte, pielaides).
- Kalibrēšanas parametri (izmēru skalas, spiediens, orientācija utt.).
- Virsmas izmērs (platums un augstums pikseļos).
- Pārvēršanas un mērogošanas koeficienti, kas nosaka, kā neapstrādātās koordinātas tiek kartētas ekrāna telpā.
Globālie parametri ir uzskaitīti arī šīs sadaļas beigās. piemēram, pieskāriena intervālu, rādītāja ātruma robežvērtības vai žestu iestatījumus (dubultā pieskāriena laiku, minimālo attālumu utt.), kas tieši ietekmē plūstamības sajūtu.
InputDispatcher: notikumu sūtīšana uz logiem un ANR
InputDispatcher Tas apstrādā ienākošo notikumu nosūtīšanu uz dažādiem logiemTā statuss parāda, kurš logs ir fokusā, kuri ir skārienjutīgi, ievades rindu stāvokli un to, vai notiek ANR (lietojumprogramma neatbild).
Praksē šī sadaļa ļauj jums pārbaudīt:
- Pa kuru logu klauvēšanas brīdī tika dzirdamas skaņas?
dumpsys. - Ja ir gaidāmi notikumi vai bloķētas rindas, tas var palielināt uztverto latentumu.
- Kā ienākošie savienojumi tiek sadalīti starp dažādiem logiem un vai kāds no tiem pārslogo savu rindu.
Vienkārša, bet ļoti atklājoša pārbaude Tas ir tikai pieskāriens ekrānam, palaidiet to nekavējoties adb shell dumpsys input un pārbaudiet, vai līnija TouchStates Pareizi identificējiet logu, kuram pieskārāties. Ja nē, tad kaut kas nav kārtībā ar fokusa pārvaldību vai skāriena apgabala kartēšanu.
Lietotāja saskarnes veiktspējas mērīšana ar gfxinfo un framestats
Kad galvenā problēma ir animāciju un ritināšanas nepilnības, serviss gfxinfo Viņš ir tavs draugs. Caur dumpsys gfxinfo Varat iegūt datus par konkrētas lietotnes atveidotajiem kadriem.
Pamata komanda konkrētai lietotnei ir:
adb shell dumpsys gfxinfo package-name
Ja pievienojat opciju framestatsDiagnoze kļūst vēl detalizētāka:
adb shell dumpsys gfxinfo package-name framestats
Tas sniegs jums latentuma statistiku pa kadriem Šie dati no nesenajām animācijām ir ļoti noderīgi, lai identificētu konkrētas pārejas vai ekrānus, kuros renderēšanas laiks ievērojami palielinās. Šo informāciju pēc tam var integrēt automatizētos testos vai makroetalonos, lai uzraudzītu regresijas starp lietotnes versijām.
Tīkla diagnostika ar dumpsys netstats
Lai saprastu, vai lietotāja interfeisa latentums ir saistīts ar lēnu tīklu vai datplūsmas pieaugumu, serviss netstats Tas ir ļoti noderīgi. Tas apkopo tīkla lietošanas statistiku no brīža, kad ierīce tiek ieslēgta.
Tipiskā komanda sīkāk ir:
adb shell dumpsys netstats detail
Izbraukšana ir sadalīta vairākās daļās.:
- Aktīvās saskarnes un aktīvās UID saskarnes, kur tādi nosaukumi kā
wlan0un tā tīkla identifikatoru. - “Dev” un “Xt” statistika, kas rāda vēsturiskos datus ar laika intervāliem (piemēram, vienas stundas intervālos) un laukiem, piemēram, saņemtajiem baitiem (
rb), saņemtās pakas (rp), pārraidītie baiti (tb), Utt. - Statistika pēc UID, kur varat sadalīt konkrētas lietotnes tīkla patēriņu, nošķirot mobilo un Wi-Fi tīklu.
Lai atrastu savas lietotnes UIDTiek izmantots kaut kas līdzīgs šim:
adb shell dumpsys package your-package-name | grep userId
Kad esat sapratis vērtību userId, jūs varat apskatīt izeju netstats līnijas ar uid=ese_valor un, piemēram, redzēt, cik baitu un pakešu tas ir izmantojis katrā divu stundu periodā un vai tas bija priekšplānā (set=DEFAULT) vai fonā (set=BACKGROUND).
Akumulatora un enerģijas patēriņš ar akumulatora statistiku
Latentums un traucējumi tiek novērsti ne tikai ar lielāku veiktspēju.Dažreiz ir vērts arī aplūkot, kā optimizācijas ietekmē enerģijas patēriņu. dumpsys batterystats Tas sniedz ļoti visaptverošu pārskatu par akumulatora lietojumu pēc UID un komponentiem.
Šī pakalpojuma bāzes komanda ir:
adb shell dumpsys batterystats options
Ja vēlaties koncentrēties uz konkrētu lietotni kopš pēdējās augšupielādes, tiek izmantots:
adb shell dumpsys batterystats --charged package-name
Parastā aiziešana ietver:
- Ar akumulatoru saistītu notikumu vēsture.
- Globālā ierīču statistika.
- Enerģijas patēriņa aprēķini pēc UID un sistēmas komponentiem.
- Mobilā tīkla lietošanas laiks katrā lietotnē un pakotnē.
- Sistēmas un lietotņu UID globālā statistika.
Reģistrācijas formāts (CSV) automatizētai analīzei
Ja akumulatora dati ir jāapstrādā, izmantojot skriptus vai ārējus rīkusJūs varat ģenerēt "mašīnlietotājam draudzīgu" izvadi ar:
adb shell dumpsys batterystats --checkin
Šajā formātā katrs novērojums tiek attēlots CSV rindā.ar sadaļas identifikatoru, kas nosaka, kā interpretēt pārējos laukus. Daži sadaļu piemēri ir šādi:
versReģistrēšanās, sūtījumu un platformas versijas.uidUID — pakotnes nosaukuma saistība.apk,pr,sr,vib,fgutt.: procesu, sensoru, vibratora, priekšplāna laika, sinhronizāciju, uzdevumu utt. izmantošana.ntygntīkla statistika (baiti un mobilo/Wi-Fi paketes, darbības laiks utt.).bt,dc,lvAkumulatora dati, piemēram, laiks, līmeņi un izlādes.wfl,gwfl,gble: konkrēta Wi-Fi un Bluetooth informācija, tostarp laiki un aptuvenais patēriņš mAh.
Jaunākajās Android versijās (6.0 un jaunākās)Wi-Fi, mobilo sakaru radio un Bluetooth enerģijas patēriņš ir ziņots kā elementi pwi ar īpašām etiķetēm (wifi, blue, cell), savukārt vecākās versijās tas bija grupēts sadaļā m (dažādas lietas).
Atmiņas pārbaude laika gaitā, izmantojot procstats
Ja jums ir aizdomas, ka problēmu rada atmiņas noplūdes vai fonā darbojošās pārslogotas lietotnes, dumpsys procstats Tas ļauj redzēt, kā jūsu lietojumprogramma darbojas laika gaitā: cik ilgi tā ir bijusi aktīva, kādā stāvoklī un ar kādu atmiņas patēriņu.
Tipisks lietojums ir statistikas pieprasīšana par pēdējām dažām stundām.Piemēram:
adb shell dumpsys procstats --hours 3
Izvade apkopo katrai lietotnei. Procesa darbības laika procentuālā daļa, kā arī PSS, USS un RSS vērtības minimālās, vidējās un maksimālās vērtības, kā arī ņemto paraugu skaits. Tiek parādīts arī atmiņas kopsavilkums pēc procesa veida (kodols, vietējais, pastāvīgais, augšējā līmeņa, pakalpojumi, kešatmiņā saglabātie procesi utt.).
Šis apkopotais skats palīdz noteikt likumsakarības piemēram, lietojumprogrammas, kas pārāk ilgi paliek fona stāvoklī vai kurām ir ļoti augsts vidējais vai maksimālais PSS, ir potenciāli kandidāti optimizācijai vai pat var radīt atmiņas slodzi, kas pasliktina sistēmas veiktspēju.
Detalizēts atmiņas momentuzņēmums ar meminfo
Ja nepieciešams ļoti detalizēts konkrēta procesa atmiņas izmantošanas momentuzņēmumsŠis rīks ir dumpsys meminfoAr to var redzēt, kā RAM tiek sadalīta starp vietējām kaudzēm, Dalvik/ART, koda kartēm, grafikas buferiem utt.
Pamata sintakse ir:
adb shell dumpsys meminfo package_name|pid
Iespēja -d Vairāk informācijas par Dalvik/ARTparādot iekšējās detaļas, piemēram, vietu lieliem objektiem (.LOS), GC pārslodze, JIT kešatmiņa, zigotu telpa utt. Ar -h Jūs varat redzēt visus pieejamos karogus.
Galvenās kolonnas, kas jāievēro, parasti ir Pss Total y Private DirtyŠie skaitļi attiecīgi atspoguļo RAM izmantošanu, kas koriģēta, kopīgojot, un modificētās privātās atmiņas apjomu, kas tiks atbrīvots tikai pēc procesa beigām. Dažreiz tie ir arī interesanti. Private Clean y Heap AllocJa konstatējat neparastu patēriņu, pārbaudiet, kā atbrīvot RAM lai tos mazinātu.
Dažas atbilstošas kategorijas tabulā:
Native HeapyDalvik Heap: vietējās un VM kaudzes atmiņas izmantošana.Heap AllocTas parāda, ko piešķīrēji uzskata par rezervētu, kas zigotas efekta un koplietojamās atmiņas dēļ var būt augstāks par PSS..so mmap,.dex mmap,.oat mmapy.art mmapRAM, ko izmanto vietējais kods un baitkods, tostarp ART attēli un to koplietotās vietas..Heap,.LOS,.GC,.JITCache,.Zygote,.NonMoving,.IndirectRef(ar-d): sīkāk sadalot ART pārvaldītās atmiņas iekšējo izmantošanu.Unknown: lapas, kuras nevarēja klasificēt iepriekšējās kategorijās, bieži vien vietējās piešķires, kas tiek skatītas, izmantojot ASLR.
KOPĀ rindā ir apkopots procesa kopējais PSS.ko var salīdzināt ar citu procesu PSS un pieejamo RAM. Private Dirty + Private Clean Tie norāda atmiņu, kas tiks atbrīvota, kad process tiks nogalināts.
Turklāt ziņojuma beigās ir uzskaitīti augsta līmeņa objektu skaitītāji. kā vairāki ViewRootImpl, AppContexts o ActivitiesTas palīdz atklāt tipiskas kontekstu vai darbību noplūdes, ko glabā statiskās atsauces vai skati/zīmējumi, kas turpina uz tiem norādīt.
Ir vērts atcerēties tas viens View vai Drawable Viņi arī atsaucas uz Activity no kurienes tie rodas, tāpēc to nepareiza uzglabāšana var izraisīt visu darbību un ar tām saistīto resursu noplūdes.
Apvienojot Perfetto detalizētās pēdas ar Dumpsys diagnostiku (ievade, grafika, atmiņa, tīkls un akumulators) sniedz 360 grādu pārskatu par Android lietotnes darbību: sākot no pavediena plānošanas brīža līdz tam, cik milisekundes nepieciešamas kadra renderēšanai vai cik daudz papildu atmiņas un enerģijas tas patērē. Šo rīku regulāra izmantošana izstrādē un testēšanā rada atšķirību starp lietotni, kas "vairāk vai mazāk darbojas", un tādu, kas šķiet patiesi plūstoša, stabila un efektīva pat pieticīgās ierīcēs. optimizēt Android.
