Facebook otevřel kód rámce pro detekci úniků paměti v JavaScriptu

Společnost Facebook (zakázaná v RF) zveřejnila zdrojové kódy nástroje memlab, který je určen pro analýzu snímků stavu dynamicky přidělované paměti (haldy), určování optimalizačních strategií pro práci s pamětí a detekci úniků paměti, které vznikají při vykonávání kódu napsaného v jazyce JavaScript. Kód je zveřejněn pod licencí MIT.

Rámec byl vytvořen pro analýzu příčin vysoké spotřeby paměti při práci s webovými stránkami a webovými aplikacemi. Například pomocí memlab byla provedena analýza spotřeby paměti při používání nové verze stránky Facebook.com, která odhalila úniky vedoucí k haváriím prohlížeče na straně klienta kvůli vyčerpání volné paměti.

Příčinami úniků paměti při vykonávání JavaScriptového kódu mohou být skryté odkazy na objekty, kvůli nimž garbage collector nemůže uvolnit paměť obsazenou objektem, nerozumné cachování hodnot nebo implementace nekonečného scrollování bez odstraňování starých prvků seznamu. Například v níže uvedeném kódu v Chromu nastává únik paměti kvůli objektu „obj“, i když mu je přiřazena hodnota null, neboť Chrome uchovává interní odkazy na výstupní objekty, aby umožnil jejich pozdější inspekci v webové konzoli. var obj = {}; console.log(obj); obj = null;

Hlavní možnosti memlab:

  • Odhalování úniků paměti v prohlížeči. Memlab umožňuje automaticky porovnávat snímky stavu dynamické paměti, odhalovat úniky paměti a agregovat výsledky.
  • Objektově orientované API pro iteraci haldy, které umožňuje vytvářet vlastní algoritmy pro odhalování ú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, stejně jako pro platformy Node.js, Electron a Hermes.
  • Příkazový řádek a API pro hledání možností optimalizace využití paměti.
  • Systém assertů pro Node.js, který umožňuje vytvářet unit testy a spouštět programy založené na Node.js pro vytváření snímků vlastního stavu, kontrolu vlastní paměti nebo psaní rozšířených assert kontrol.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster