JavaScript-en memoria ihesak detektatzeko kode irekiko markoa

Facebookek (Errusiar Federazioan debekatua) memlab tresna-tresnaren iturburu-kodea ireki du, dinamikoki esleitutako memoriaren (heap) egoeraren zatiak aztertzeko diseinatua, memoria kudeaketa optimizatzeko estrategiak zehazteko eta kodea exekutatzean gertatzen diren memoria-ihesak identifikatzeko. JavaScript. Kodea irekita dago MIT lizentziapean.

Webguneekin eta web aplikazioekin lan egitean memoria-kontsumo handiaren arrazoiak aztertzeko sortu zen esparrua. Esaterako, memlab-ek memoria-kontsumoa aztertzeko erabili zen Facebook.com webgunearen bertsio berri bat erabiltzean, eta horri esker, memoria librea agortzearen ondorioz arakatzailea bezero aldean huts egitea eragin zuten filtrazioak identifikatu ahal izan ziren.

JavaScript kodea exekutatzen denean memoria ihesen arrazoiak ezkutuko objektuen erreferentziak izan daitezke, zabor-biltzaileak objektuak okupatzen duen memoria askatzea eragozten dutenak, balioen cachean gordetzea edo korritze infinitua ezartzea zerrendako elementu zaharrak desalojatu gabe. Adibidez, beheko kodean Chrome-n, memoria-ihes bat gertatzen da "obj" objektuaren ondorioz, null balioa esleitzen zaion arren, Chrome-k irteerako objektuen barne-erreferentziak gordetzen ditu gero web kontsolan ikuskatzeko. . var obj = {}; console.log(obj); obj = null;

Melabaren ezaugarri nagusiak:

  • Arakatzailean memoria ihesak detektatzea. Memlab-ek memoria dinamikoaren egoeraren argazkiak automatikoki alderatzeko aukera ematen du, memoria ihesak detektatzeko eta emaitzak batzeko.
  • Objektuetara zuzendutako API bat pilaren iteraziorako, zure ihesak detektatzeko algoritmoak ezartzeko eta pilaren egoeraren argazkiak aztertzeko sistemak ezartzeko aukera ematen dizu. Heap analisia Chromium motorean oinarritutako arakatzaileentzako onartzen da, baita Node.js, Electron eta Hermes plataformetan ere.
  • Komando-lerroko interfazea eta APIa memoriaren erabilera optimizatzeko aukerak aurkitzeko.
  • Node.js-erako asserzio-sistema bat, unitate-probak sortzeko eta Node.js-en oinarritutako programak exekutatzeko, zure egoeraren zatiak sortzeko, zure memoria probatzeko edo baieztapen-egiaztapen hedatuak idazteko.

Iturria: opennet.ru

Gehitu iruzkin berria