Kompania Facebook (e ndaluar në RF) bëri të disponueshëm kodin burimor të mjetit memlab, i destinuar për analizimin e kopjeve të gjendjes së memories dinamike (heaps), përcaktimin e strategjive të optimizimit të 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 është krijuar për të analizuar arsyet e konsumit të madh të memories gjatë punës me faqet web dhe aplikacionet web. Për shembull, me ndihmën e memlab është bërë analiza e konsumit të memories gjatë përdorimit të versionit të ri të faqes Facebook.com, e cila identifikoi 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Ă« pranimi i lidhjeve tĂ« fshehura me objekte, pĂ«r shkak tĂ« tĂ« cilave mbledhĂ«si i mbeturinave nuk mund tĂ« lirojĂ« memorien e zĂ«nĂ« nga objekti, ruajtja e paarsyeshme e vlerave ose implementimi i rrotullimit tĂ« pafund pa largimin e elementeve tĂ« vjetra nga lista. PĂ«r shembull, nĂ« kodin e mĂ«poshtĂ«m nĂ« Chrome, ndodhin rrjedhje tĂ« memories pĂ«r shkak tĂ« objektit âobjâ, megjithĂ«se i jepet vlera null, sepse Chrome ruan lidhje tĂ« brendshme me objektet e dukshme pĂ«r tĂ« mundĂ«suar inspektimin e tyre tĂ« mĂ«vonshĂ«m nĂ« konsolĂ«n web. var obj = {}; console.log(obj); obj = null;
Mundësitë kryesore të memlab:
- Identifikimi i rrjedhjeve të memories në shfletues. Memlab lejon krahasimin automatik të kopjeve të gjendjes së memories dinamike, identifikimin e rrjedhjeve të memories dhe agregimin e rezultateve.
- API objektor për iterimin e heaps, që lejon implementimin e algoritmeve të veta për identifikimin e rrjedhjeve dhe realizimin e sistemeve të analizës së kopjeve të gjendjes së heaps. Analiza e heaps mbështetet për shfletuesit e bazuar në motorin Chromium, si dhe për platformat Node.js, Electron dhe Hermes.
- Një ndërfaqe komandash dhe API për gjetjen e mundësive për optimizimin e përdorimit të memories.
- Një sistem assert-esh për Node.js, i cili lejon krijimin e testeve unit dhe ekzekutimin e programeve bazuar në Node.js për krijimin e kopjeve të gjendjes së vet, verifikimin e memories së saj ose shkruan provime të rozsishme assert.
Burimi: opennet.ru
