Facebook hap kodin e kornizës për identifikimin e rrjedhjeve të memories në JavaScript

Kompania Facebook (e ndaluar në RF) publikoi kodin burimor të mjetit memlab, i dedikuar për analizimin e gjendjes së kompresionit dinamik të memorie (heap), përcaktimin e strategjive për optimizimin e punës me memorien dhe identifikimin e rrjedhjeve të memories që ndodhin gjatë ekzekutimit të kodit në gjuhën JavaScript. Kodi është i hapur nën licencën MIT.

Framework-u u krijua për të shqyrtuar arsyet e konsumit të lartë të memories gjatë punës me web-faqe dhe aplikacione web. Për shembull, me ndihmën e memlab u analizua konsumimi i memories gjatë përdorimit të versionit të ri të faqes Facebook.com, i cili zbuloi rrjedhje që çuan në mbylljen e papritur të shfletuesit në anën e klientit për shkak të shterimit të memories së lirë.

Arsyet e rrjedhjeve të memories gjatë ekzekutimit të kodit JavaScript mund të jenë praninë e lidhjeve të fshehta me objekte, të cilat e pengojnë mbledhësin e plehrave të lirojë memorien e mbajtur nga objekti, keq-kestimi i vlerave ose implementimi i skrollimit të pafund pa zëvendësimin e elementeve të vjetra të listës. Për shembull, në kodin e mëposhtëm në Chrome, ndodh një rrjedhje memorjeje për shkak të objektit "obj", pavarësisht se i caktohet vlera null, pasi Chrome ruan lidhjet e brendshme me objektet e paraqitura për të mundësuar inspektimin e tyre të mëvonshëm në web-konsol.

Kapat e memlab:

  • Identifikimi i rrjedhjeve tĂ« memories nĂ« shfletues. Memlab lejon krahasimin automatik tĂ« gjendjeve tĂ« kompresionit dinamik tĂ« memories, identifikimin e rrjedhjeve tĂ« memories dhe agregimin e rezultateve.
  • API objekt-orientuar pĂ«r tĂ« pĂ«rshkuar heap-in, i cili lejon zhvillimin e algoritemeve tĂ« veta pĂ«r identifikimin e rrjedhjeve dhe realizimin e sistemeve tĂ« analizĂ«s sĂ« gjendjeve tĂ« heap-it. Analiza e heap-it mbĂ«shtetet pĂ«r shfletuesit qĂ« bazohen nĂ« motorin Chromium, si dhe pĂ«r platformat Node.js, Electron dhe Hermes.
  • NdĂ«rfaqja e komandave tĂ« linjĂ«s dhe API pĂ«r kĂ«rkimin e mundĂ«sive pĂ«r optimizimin e pĂ«rdorimit tĂ« memories.
  • sistemi i assert-Ă«ve pĂ«r Node.js, i cili lejon krijimin e testeve unike dhe ekzekutimin e programeve tĂ« bazuara nĂ« Node.js pĂ«r tĂ« krijuar gjendje tĂ« veta, verifikimin e memories sĂ« saj ose shkruan kontroll tĂ« zgjeruar assert.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster