Korniza me burim të hapur të Facebook për të zbuluar rrjedhjet e kujtesës në JavaScript

Facebook (i ndaluar në Federatën Ruse) ka hapur kodin burimor të paketës së veglave memlab, i krijuar për të analizuar pjesë të gjendjes së memories së alokuar dinamikisht (grumbull), për të përcaktuar strategjitë për optimizimin e menaxhimit të kujtesës dhe për të identifikuar rrjedhjet e kujtesës që ndodhin gjatë ekzekutimit të kodit në JavaScript. Kodi është i hapur nën licencën MIT.

Korniza u krijua për të analizuar arsyet e konsumit të lartë të memories kur punoni me faqet e internetit dhe aplikacionet në internet. Për shembull, memlab u përdor për të analizuar konsumin e kujtesës kur përdorni një version të ri të faqes së internetit Facebook.com, i cili bëri të mundur identifikimin e rrjedhjeve që çuan në rrëzimin e shfletuesit në anën e klientit për shkak të rraskapitjes së memories së lirë.

Shkaqet e rrjedhjeve të kujtesës gjatë ekzekutimit të kodit JavaScript mund të jenë referencat e fshehura të objekteve që pengojnë grumbulluesin e mbeturinave të çlirojë memorien e zënë nga objekti, ruajtja e gabuar e vlerave ose zbatimi i lëvizjes së pafundme pa nxjerrë elementet e listës së vjetër. Për shembull, në kodin më poshtë në Chrome, një rrjedhje memorie ndodh për shkak të objektit "obj", pavarësisht nga fakti se i është caktuar vlera null, pasi Chrome ruan referenca të brendshme për objektet e daljes për t'i lejuar ato të inspektohen më vonë. në tastierën e internetit. var obj = {}; konsol.log(obj); obj = null;

Karakteristikat kryesore të memlab:

  • Zbulimi i rrjedhjeve të kujtesës në shfletues. Memlab ju lejon të krahasoni automatikisht pamjet e gjendjes dinamike të kujtesës, të zbuloni rrjedhjet e kujtesës dhe të grumbulloni rezultatet.
  • Një API e orientuar nga objekti për përsëritjen e grumbullit, që ju lejon të zbatoni algoritmet tuaja të zbulimit të rrjedhjeve dhe të zbatoni sisteme për analizimin e fotografive të gjendjes së grumbullit. Analiza e grumbullit mbështetet për shfletuesit e bazuar në motorin Chromium, si dhe për platformat Node.js, Electron dhe Hermes.
  • Ndërfaqja e linjës së komandës dhe API për gjetjen e mundësive për të optimizuar përdorimin e kujtesës.
  • Një sistem pohimi për Node.js që ju lejon të krijoni teste njësie dhe të ekzekutoni programe të bazuara në Node.js për të krijuar pjesë të gjendjes tuaj, për të testuar kujtesën tuaj ose për të shkruar kontrolle të zgjeruara të pohimeve.

Burimi: opennet.ru

Shto një koment