Programinės įrangos kūrimo procese efektyvus išteklių valdymas yra lemiamas, ypač naudojant JavaScript. Dažnas problema yra atminties nuotėkiai, kurie gali paveikti programos našumą ir stabilumą. Šiame vadove parodysiu tau, kaip naudoti atminties profilį Chrome Developer Įrankiuose, kad galėtum analizuoti savo programos atminties naudojimą ir nustatyti galimus atminties nuotėkius.
Svarbiausios išvados
- Atminties skirtukas leidžia jums stebėti savo programos atminties naudojimą ir kurti heap „snapshots“.
- Automatinis šiukšlių surinkimas yra procesas, kuris atlaisvina nereferencijuotą atmintį.
- Naudodami heap „snapshots“, galite analizuoti savo atminties dabartinę būseną ir sužinoti, kurie objektai laiko referencijas.
- Atjungti DOM elementai gali sukelti galimus atminties nuotėkius, jei jie nėra teisingai atlaisvinami.
Žingsnis po žingsnio instrukcijos
1 žingsnis: Prieiga prie atminties skirtuko
Norėdami naudoti atminties profilį, atidarykite „Chrome Developer Įrankius“, spustelėję dešinįjį pelės mygtuką puslapyje ir pasirinkę „Tirti“ arba naudodami klavišų kombinaciją F12. Tada pereikite į skirtuką „Atmintis“.
2 žingsnis: Heap „Snapshot“ kūrimas
Atminties skirtuke galite kurti heap „Snapshot“. Spustelėkite mygtuką „Gauti „Snapshot““. Tai suteiks jums apžvalgą apie jūsų programos atminties padėtį konkrečiu momentu. Šiame snapshote galite ištirti esamus objektus ir jų referencijas.
3 žingsnis: Heap „Snapshot“ analizė
Atlikę „Snapshot“, galite analizuoti objektus, laikomus atmintyje. Paskleiskite rodantį objektų sąrašą ir spustelėkite konkrečią objekto dalį, kad gautumėte daugiau informacijos apie referencijas. Taip pat galite pamatyti objekto dydį ir jo retencijos referencijas, kurios rodo, kurie objektai neleido šiuo metu esantį objektą išmesti šiukšlių surinkėjui.
4 žingsnis: Šiukšlių surinkimo paleidimas
Norėdami patikrinti, kurie objektai gali būti saugiai atlaisvinti, galite rankiniu būdu paleisti šiukšlių surinkimą. Paspauskite mygtuką „Surinkti šiukšles“. Taip galite stebėti, ar atminties naudojimas mažinamas ir ar naudojami objektai yra ištrinami.
5 žingsnis: Detached DOM elementų tyrimas
Daugelio atminties valdymo problemų priežastis yra atjungti DOM elementai, tai yra elementai, kurie buvo pašalinti iš DOM, tačiau vis dar laikomi atmintyje. Galite lengvai identifikuoti šiuos objektus, filtruodami snapshotą pagal „atjungtus“. Taip galite patikrinti, kurie elementai daugiau neegzistuoja DOM, tačiau vis dar laikomi atmintyje.
6 žingsnis: Objektų referencijų stebėjimas
Kai nustatote, kad tam tikri objektai nėra atlaisvinami, svarbu suprasti, kurių kitų objektų jie laikomi referencijos laikytojais. Pasirinkite objektą ir peržiūrėkite jo retencijos referencijas, kad suprastumėte hierarchiją ir priklausomybes, kurios neleidžia šiukšlių surinktuvui veikti.
7 žingsnis: Testavimas ir patvirtinimas
Naudodamiesi „Heap Snapshots“ per sąveikos su jūsų programa metus kartokite kelis kartus, kad įsitikintumėte, jog jūsų pakeitimai optimizuoja atminties naudojimą. Taip galite patikrinti, ar atminties naudojimas elgiasi taip, kaip tikėtasi, ir ar visi nereikalingi objektai sėkmingai atlaisvinami.
8 žingsnis: Laiko juostos funkcijos naudojimas
Be „Snapshot“ funkcijos, laiko juostos funkcija leidžia stebėti atminties paskirstymą tam tikru laiko tarpsniu. Galite nurodyti laikotarpį ir analizuoti, kaip objektai atmintyje yra skirstomi naudojant programos interakciją. Spustelėkite „Pradėti įrašymą“ ir sąveikaukite su savo programa, kad ištirtumėte paskirstymus.
Susijęs
Šiame vadove sužinojote, kaip naudoti „Chrome Developer Tools“ atminties profilį, kad galėtumėte analizuoti savo programų atminties naudojimą. Sužinojote, kaip kurti „Heap“ momentinius vaizdus, inicijuoti atliekų rinkimą ir išsiaiškinti potencialius atminties nuotėkį sukėlusius atsietus DOM elementus. Naudodamiesi šiais įrankiais reguliariai, galėsite optimizuoti atminties naudojimą ir ženkliai pagerinti savo programų našumą.
Daugiausiai užduodamų klausimų
Kaip nustatysiu, ar yra atminties nuotėkis?Atminties nuotėkis atsiranda, kai jūsų programos atminties naudojimas nuolat didėja naudojant programą, bet niekada nebesugrįžta į įprastą lygį.
Kas yra atskirti DOM elementai?Atskirti DOM elementai yra tie, kurie buvo pašalinti iš DOM, bet vis dar laikomi atmintyje, dažnai dėl esamų nuorodų JavaScript kintamuosiuose.
Kaip užtikrinti, kad mano programa neišlaiko nenaudojamos atminties?Reguliarūs „Heap“ momentinių vaizdų kūrimas ir atliekų rinkimo funkcijos naudojimas padeda identifikuoti nenaudojamus objektus ir užtikrinti, kad jie būtų atlaisvinti.
Ar galiu išsaugoti „Heap“ momentinių vaizdų rezultatus?Taip, galite išsaugoti momentinius vaizdus ir vėliau juos įkelti norėdami atlikti praeities analizę savo programoje.