Facebook okvir otvorenog koda za otkrivanje curenja memorije u JavaScriptu

Facebook (zabranjen u Ruskoj Federaciji) otvorio je izvorni kod alata memlab, dizajniranog za analizu isječaka stanja dinamički dodijeljene memorije (heap), određivanje strategija za optimiziranje upravljanja memorijom i prepoznavanje curenja memorije do kojih dolazi prilikom izvršavanja koda u JavaScript. Kod je otvoren pod MIT licencom.

Framework je kreiran za analizu razloga velike potrošnje memorije pri radu s web stranicama i web aplikacijama. Na primjer, memlab je korišten za analizu potrošnje memorije pri korištenju nove verzije web stranice Facebook.com, što je omogućilo identificiranje curenja koja su dovela do pada preglednika na strani klijenta zbog iscrpljenosti slobodne memorije.

Uzroci curenja memorije prilikom izvođenja JavaScript koda mogu biti reference na skrivene objekte koje sprječavaju sakupljač smeća da oslobodi memoriju koju zauzima objekt, nerazumno spremanje vrijednosti u predmemoriju ili implementacija beskonačnog pomicanja bez izbacivanja starih elemenata popisa. Na primjer, u donjem kodu u Chromeu dolazi do curenja memorije zbog objekta "obj", unatoč činjenici da mu je dodijeljena vrijednost null, jer Chrome pohranjuje interne reference na izlazne objekte za kasniju inspekciju u web konzoli . var obj = {}; konzola.log(obj); obj = nula;

Glavne značajke memlaba:

  • Otkrivanje curenja memorije u pregledniku. Memlab vam omogućuje automatsku usporedbu snimki stanja dinamičke memorije, otkrivanje curenja memorije i agregiranje rezultata.
  • Objektno orijentirani API za iteraciju hrpe, koji vam omogućuje implementaciju vlastitih algoritama za otkrivanje curenja i implementaciju sustava za analizu snimaka stanja hrpe. Heap analiza podržana je za preglednike temeljene na Chromium motoru, kao i za platforme Node.js, Electron i Hermes.
  • Sučelje naredbenog retka i API za pronalaženje prilika za optimizaciju upotrebe memorije.
  • Assert sustav za Node.js koji vam omogućuje stvaranje jediničnih testova i pokretanje programa temeljenih na Node.js za stvaranje isječaka vlastitog stanja, testiranje vaše memorije ili pisanje proširenih assert provjera.

Izvor: opennet.ru

Dodajte komentar