Facebook open source framework pro detekci úniků paměti v JavaScriptu

Facebook (zakázaný v Ruské federaci) otevřel zdrojový kód memlab toolkitu, který je navržen tak, aby analyzoval části stavu dynamicky alokované paměti (haldy), určil strategie pro optimalizaci správy paměti a identifikoval úniky paměti, ke kterým dochází při spouštění kódu v JavaScript. Kód je otevřen pod licencí MIT.

Framework byl vytvořen za účelem analýzy důvodů vysoké spotřeby paměti při práci s weby a webovými aplikacemi. Memlab byl například použit k analýze spotřeby paměti při použití nové verze webu Facebook.com, což umožnilo identifikovat úniky, které vedly k pádu prohlížeče na straně klienta z důvodu vyčerpání volné paměti.

Příčinou úniků paměti při spouštění kódu JavaScript mohou být skryté odkazy na objekty, které zabrání sběrači odpadu uvolnit paměť obsazenou objektem, nerozumné ukládání hodnot do mezipaměti nebo implementace nekonečného rolování bez vyřazení starých prvků seznamu. Například v níže uvedeném kódu v prohlížeči Chrome dochází k úniku paměti kvůli objektu „obj“, přestože je mu přiřazena hodnota null, protože Chrome ukládá interní odkazy na výstupní objekty pro pozdější kontrolu ve webové konzoli. . var obj = {}; console.log(obj); obj = null;

Hlavní vlastnosti memlabu:

  • Detekce úniků paměti v prohlížeči. Memlab vám umožňuje automaticky porovnávat snímky stavu dynamické paměti, detekovat úniky paměti a agregovat výsledky.
  • Objektově orientované API pro iteraci haldy, které vám umožňuje implementovat vlastní algoritmy detekce úniků a implementovat systémy pro analýzu snímků stavu haldy. Analýza haldy je podporována pro prohlížeče založené na enginu Chromium a také pro platformy Node.js, Electron a Hermes.
  • Rozhraní příkazového řádku a API pro hledání příležitostí k optimalizaci využití paměti.
  • Systém prosazování pro Node.js, který vám umožňuje vytvářet testy jednotek a spouštět programy založené na Node.js za účelem vytváření řezů vašeho vlastního stavu, testování paměti nebo zápisu rozšířených kontrol potvrzení.

Zdroj: opennet.ru

Přidat komentář