Facebook open source framework na zisťovanie únikov pamäte v JavaScripte

Facebook (zakázaný v Ruskej federácii) otvoril zdrojový kód memlab toolkitu, ktorý je navrhnutý tak, aby analyzoval časti stavu dynamicky pridelenej pamäte (haldy), určil stratégie na optimalizáciu správy pamäte a identifikoval úniky pamäte, ku ktorým dochádza pri vykonávaní kódu v JavaScript. Kód je otvorený pod licenciou MIT.

Rámec bol vytvorený s cieľom analyzovať dôvody vysokej spotreby pamäte pri práci s webovými stránkami a webovými aplikáciami. Napríklad memlab bol použitý na analýzu spotreby pamäte pri používaní novej verzie webu Facebook.com, čo umožnilo identifikovať úniky, ktoré viedli k pádu prehliadača na strane klienta z dôvodu vyčerpania voľnej pamäte.

Príčinou úniku pamäte pri vykonávaní kódu JavaScript môžu byť skryté referencie na objekty, ktoré bránia zberateľovi odpadu uvoľniť pamäť obsadenú objektom, nerozumné ukladanie hodnôt do vyrovnávacej pamäte alebo implementácia nekonečného rolovania bez vymazania starých prvkov zoznamu. Napríklad v nižšie uvedenom kóde v prehliadači Chrome dochádza k úniku pamäte v dôsledku objektu „obj“ napriek skutočnosti, že má priradenú hodnotu null, pretože prehliadač Chrome ukladá interné odkazy na výstupné objekty na neskoršiu kontrolu vo webovej konzole. . var obj = {}; console.log(obj); obj = null;

Hlavné vlastnosti memlabu:

  • Detekcia úniku pamäte v prehliadači. Memlab vám umožňuje automaticky porovnávať snímky stavu dynamickej pamäte, zisťovať úniky pamäte a agregovať výsledky.
  • Objektovo orientované API pre iteráciu haldy, ktoré vám umožňuje implementovať vaše vlastné algoritmy detekcie úniku a implementovať systémy na analýzu snímok stavu haldy. Analýza haldy je podporovaná pre prehliadače založené na motore Chromium, ako aj pre platformy Node.js, Electron a Hermes.
  • Rozhranie príkazového riadka a API na nájdenie príležitostí na optimalizáciu využitia pamäte.
  • Systém potvrdenia pre Node.js, ktorý vám umožňuje vytvárať testy jednotiek a spúšťať programy založené na Node.js na vytváranie rezov vášho vlastného stavu, testovanie pamäte alebo písanie rozšírených kontrol potvrdení.

Zdroj: opennet.ru

Pridať komentár