„Facebook“ išleido „memlab“ šaltinio kodą

„Facebook“ atmintis

„MemLab“ yra „JavaScript“ atminties nutekėjimų nustatymo sistema

Neseniai žinia tai atskleidė „Facebook“ priėmė sprendimą išleisti šaltinio kodą įrankių rinkinio memlab, kuris yra skirtas atminties būsenos dalims analizuoti dinamiškai paskirstyti (krūva), nustatyti strategiją, kaip optimizuoti darbą su atmintimi ir aptikti atminties nutekėjimą, atsirandantį vykdo JavaScript kodą. 

Sistema buvo sukurtas siekiant išanalizuoti didelio atminties suvartojimo priežastis dirbant su svetainėmis ir žiniatinklio programomis. Pavyzdžiui, „memlab“ buvo naudojamas atminties suvartojimui analizuoti naudojant naują Facebook.com svetainės versiją, kuri atskleidė nutekėjimą, dėl kurio dėl laisvos atminties išeikvojimo įvyko kliento naršyklės gedimas.

Žmonės, naudojantys mūsų žiniatinklio programas, dažnai iškart pastebės našumo problemas ir funkcinius pataisymus. Tačiau atminties praradimas yra kita istorija. Tai nėra pastebima iš karto, nes vienu metu sunaudojama viena atminties dalis, paveikiama visą žiniatinklio seansą, o tolesnės sąveikos tampa lėtesnės ir mažiau reaguojančios.

Siekdami padėti kūrėjams tai išspręsti, sukūrėme „MemLab“ – „JavaScript“ atminties testavimo sistemą, kuri automatizuoja nuotėkio aptikimą ir palengvina atminties nutekėjimo vietą. Naudojome MemLab on Meta, kad sėkmingai sustabdytume netvaraus atminties augimą ir nustatytų atminties nutekėjimą bei atminties optimizavimo galimybes savo produktuose ir infrastruktūroje.

Didelis atminties naudojimas turi statistiškai reikšmingą ir neigiamą poveikį puslapio įkėlimui ir sąveikos našumui (kiek laiko užtrunka įkelti puslapį arba atlikti sąveiką)
Naudotojų įtraukimo metrika (aktyvūs naudotojai, svetainėje praleistas laikas, atliktų veiklų skaičius)

Atminties nutekėjimo priežastys kai vykdomas JavaScript kodas gali būti paslėptų objektų nuorodų buvimas, taip šiukšlių surinkėjas negali atlaisvinti atminties užimtas objektas, nepagrįstas reikšmių kaupimas talpykloje arba begalinio slinkimo įgyvendinimas neiškeliant senų sąrašo elementų.

Pavyzdžiui, šiame „Chrome“ kode atminties nutekėjimas įvyksta dėl objekto „obj“, nors jis nustatytas į nulį, nes „Chrome“ išsaugo vidines nuorodas į pateiktus objektus, kad vėliau būtų galima juos patikrinti žiniatinklio konsolėje.

Pagrindinė Memlab operacija, yra taip:

  1. Pirmiausia ji aptinka atminties nutekėjimą naršyklėje, o „Memlab“ leidžia automatiškai palyginti dinaminės atminties momentines nuotraukas, aptikti atminties nutekėjimą ir apibendrinti rezultatus.
  2. Į objektą orientuota krūvos perėjimo API, leidžianti įdiegti savo nuotėkio aptikimo algoritmus ir įdiegti krūvos momentinių nuotraukų analizavimo sistemas. Krūvos analizavimas palaikomas naršyklėse, pagrįstose „Chromium“ varikliu, taip pat platformose „Node.js“, „Electron“ ir „Hermes“.
  3. Komandinės eilutės sąsaja ir API, siekiant rasti galimybių optimizuoti atminties naudojimą.
  4. Node.js tvirtinimo sistema, leidžianti kurti vienetų testus ir paleisti Node.js pagrįstas programas, kad padalintumėte savo būseną, patikrintumėte atmintį ar rašytumėte išplėstinius tvirtinimus.
  5. Išlaikymo pėdsakų grupavimas, MemLab sugrupuoja visus saugojimo pėdsakus ir rodo kiekvienos filtruotų objektų, turinčių panašius saugojimo pėdsakus, grupės pėdsakus. Sekimas taip pat apima derinimo informaciją, pvz., dominuojančius mazgus ir išsaugotus dydžius.
  6. Pranešant apie nutekėjimą, MemLab gali būti paleista reguliariais intervalais visą dieną, kad būtų gautas nuolatinis signalas apie atminties regresijas. Visos naujos regresijos įtraukiamos į vidinį prietaisų skydelį, kuriame renkami ir klasifikuojami visų aptiktų atminties nutekėjimų saugojimo pėdsakai. Tada kūrėjai gali spustelėti ir peržiūrėti objekto ypatybes kiekvieno atminties nutekėjimo sulaikymo takelyje.

Pagaliau jei tau įdomu, turėtumėte žinoti, kad „Memlab“ kodas yra atvirojo kodo pagal MIT licenciją, ir apie tai galite sužinoti daugiau Šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.