Tvrtka Facebook (zabranjena u RF) otvorila je izvorne tekstove alata memlab, namijenjenog analizi snimaka stanja dinamički dodijeljene memorije (hrpe), određivanju strategije optimizacije rada s memorijom i otkrivanju curenja memorije koja nastaje prilikom izvođenja koda na jeziku JavaScript. Kod je otvoren pod MIT licencom.
Okvir je stvoren za ispitivanje uzroka velike potrošnje memorije prilikom rada s web stranicama i web aplikacijama. Na primjer, pomoću memlab-a proveden je pregled potrošnje memorije prilikom korištenja nove verzije stranice Facebook.com, što je omogućilo otkrivanje curenja koja su dovela do neispravnog završavanja preglednika na strani klijenta zbog ispunjenja slobodne memorije.
Uzroci curenja memorije prilikom izvođenja JavaScript koda mogu biti prisutnost skrivenih referenci na objekte, zbog kojih sakupljač smeća ne može osloboditi memoriju koju zauzima objekt, nerazborito keširanje vrijednosti ili implementacija beskonačnog pomjeranja bez protjerivanja starih stavki s popisa. Na primjer, u donjem kodu u Chromeu curenje memorije nastaje zbog objekta „obj“, iako mu se dodjeljuje vrijednost null, jer Chrome zadržava unutarnje reference na prikazane objekte radi omogućavanja njihovog kasnijeg inspekcije u web konzoli. var obj = {}; console.log(obj); obj = null;
Glavne mogućnosti memlab-a:
- Otkrivanje curenja memorije u pregledniku. Memlab omogućava automatsko uspoređivanje snimaka stanja dinamičke memorije, otkrivanje curenja memorije i agregiranje rezultata.
- Objektno orijentirani API za prolazak kroz hrpu, koji omogućava implementaciju vlastitih algoritama za otkrivanje curenja i realizaciju sustava analize snimaka stanja hrpe. Podržana je analiza hrpe za preglednike temeljene na Chromium engine-u, kao i za platforme Node.js, Electron i Hermes.
- Sučelje naredbene linije i API za pronalaženje mogućnosti optimizacije korištenja memorije.
- Sustav afirmacija za Node.js koji omogućava izradu jedinčnih testova i izvođenje programa baziranih na Node.js za stvaranje snimaka vlastitog stanja, provjeru vlastite memorije ili pisanje složenih provjera afirmacija.
Izvor: opennet.ru
