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
