Facebook odprtokodno ogrodje za odkrivanje puščanja pomnilnika v JavaScriptu

Facebook (prepovedan v Ruski federaciji) je odprl izvorno kodo kompleta orodij memlab, zasnovanega za analizo rezin stanja dinamično dodeljenega pomnilnika (kupa), določanje strategij za optimizacijo upravljanja pomnilnika in prepoznavanje puščanja pomnilnika, do katerega pride pri izvajanju kode v JavaScript. Koda je odprta pod licenco MIT.

Ogrodje je bilo ustvarjeno za analizo razlogov za visoko porabo pomnilnika pri delu s spletnimi mesti in spletnimi aplikacijami. Memlab je bil na primer uporabljen za analizo porabe pomnilnika pri uporabi nove različice spletnega mesta Facebook.com, kar je omogočilo odkrivanje uhajanj, ki so privedla do sesutja brskalnika na strani odjemalca zaradi izčrpanosti prostega pomnilnika.

Vzroki za uhajanje pomnilnika pri izvajanju kode JavaScript so lahko skrite reference objektov, ki zbiralcu smeti preprečujejo, da bi sprostil pomnilnik, ki ga zaseda objekt, nespametno predpomnjenje vrednosti ali izvajanje neskončnega drsenja brez izločitve starih elementov seznama. Na primer, v spodnji kodi v Chromu pride do puščanja pomnilnika zaradi predmeta »obj«, kljub dejstvu, da mu je dodeljena vrednost null, saj Chrome shrani notranje reference na izhodne objekte za poznejši pregled v spletni konzoli. . var obj = {}; console.log(obj); obj = nič;

Glavne značilnosti memlaba:

  • Odkrivanje puščanja pomnilnika v brskalniku. Memlab vam omogoča samodejno primerjavo dinamičnih posnetkov stanja pomnilnika, odkrivanje uhajanja pomnilnika in združevanje rezultatov.
  • Objektno usmerjen API za iteracijo kopice, ki vam omogoča implementacijo lastnih algoritmov za odkrivanje puščanja in implementacijo sistemov za analizo posnetkov stanja kopice. Analiza kopice je podprta za brskalnike, ki temeljijo na motorju Chromium, kot tudi za platforme Node.js, Electron in Hermes.
  • Vmesnik ukazne vrstice in API za iskanje priložnosti za optimizacijo uporabe pomnilnika.
  • Sistem trditev za Node.js, ki vam omogoča ustvarjanje testov enote in zagon programov, ki temeljijo na Node.js, da ustvarite rezine lastnega stanja, preizkusite svoj pomnilnik ali napišete razširjena preverjanja trditev.

Vir: opennet.ru

Dodaj komentar