„Facebook“ atvirojo kodo sistema, skirta „JavaScript“ atminties nutekėjimui aptikti

„Facebook“ (uždraustas Rusijos Federacijoje) atidarė „memlab“ įrankių rinkinio šaltinio kodą, skirtą analizuoti dinamiškai paskirstytos atminties (krūvos) būsenos dalis, nustatyti atminties valdymo optimizavimo strategijas ir nustatyti atminties nutekėjimą, atsirandantį vykdant kodą programoje. JavaScript. Kodas yra atidarytas pagal MIT licenciją.

Sistema buvo sukurta siekiant išanalizuoti didelio atminties suvartojimo priežastis dirbant su svetainėmis ir žiniatinklio programomis. Pavyzdžiui, naudojant naują Facebook.com svetainės versiją, atminties suvartojimui analizuoti buvo naudojama memlab, kuri leido nustatyti nutekėjimus, dėl kurių dėl laisvos atminties išsekimo kliento pusėje sugesdavo naršyklė.

Atminties nutekėjimo priežastys vykdant JavaScript kodą gali būti paslėptos objektų nuorodos, neleidžiančios šiukšlių rinkėjui atlaisvinti objekto užimtos atminties, neprotingas reikšmių kaupimas talpykloje arba begalinio slinkimo įgyvendinimas neiškeliant senų sąrašo elementų. Pavyzdžiui, toliau pateiktame kode naršyklėje „Chrome“ atminties nutekėjimas įvyksta dėl objekto „obj“, nepaisant to, kad jam priskirta null reikšmė, nes „Chrome“ saugo vidines nuorodas į išvesties objektus, kad vėliau būtų galima patikrinti žiniatinklio konsolėje. . var obj = {}; console.log(obj); obj = null;

Pagrindinės memlab savybės:

  • Atminties nutekėjimo aptikimas naršyklėje. „Memlab“ leidžia automatiškai palyginti dinaminės atminties būsenos momentines nuotraukas, aptikti atminties nutekėjimą ir apibendrinti rezultatus.
  • Į objektą orientuota API, skirta krūvos iteracijai, leidžianti įdiegti savo nuotėkio aptikimo algoritmus ir įdiegti sistemas krūvos būsenos momentinėms nuotraukoms analizuoti. Krūvos analizė palaikoma naršyklėse, pagrįstose „Chromium“ varikliu, taip pat platformose „Node.js“, „Electron“ ir „Hermes“.
  • Komandinės eilutės sąsaja ir API, skirta rasti galimybių optimizuoti atminties naudojimą.
  • „Node.js“ patvirtinimo sistema, leidžianti kurti vienetų testus ir vykdyti programas, pagrįstas „Node.js“, kad sukurtumėte savo būsenos dalis, patikrintumėte atmintį arba rašytumėte išplėstinius teiginių patikrinimus.

Šaltinis: opennet.ru

Добавить комментарий