Facebook zveřejnil zdrojový kód memlabu

facebook-memlab

MemLab je framework pro hledání úniků paměti JavaScriptu

Nedávno to zprávy prolomily Facebook se rozhodl zveřejnit zdrojový kód sady nářadí memlab, který je navržený k analýze částí stavu paměti dynamicky alokovat (hromadu), určit strategii pro optimalizaci práce s pamětí a detekovat úniky paměti, ke kterým dochází při spouštění kódu JavaScript. 

Rámeček byl vytvořen za účelem analýzy příčin vysoké spotřeby paměti při práci s webovými stránkami a webovými aplikacemi. Například memlab byl použit k analýze spotřeby paměti při použití nové verze webu Facebook.com, která odhalila úniky, které způsobily selhání prohlížeče na straně klienta kvůli vyčerpání volné paměti.

Lidé, kteří používají naše webové aplikace, si často hned všimnou problémů s výkonem a funkčních oprav. Ztráta paměti je však jiný příběh. Není to hned patrné, protože to spotřebovává jeden kus paměti najednou, což ovlivňuje celou webovou relaci a následné interakce jsou pomalejší a méně reagující.

Abychom našim vývojářům pomohli tento problém vyřešit, vytvořili jsme MemLab , framework pro testování paměti JavaScriptu, který automatizuje detekci úniků a usnadňuje lokalizaci úniků paměti. Použili jsme MemLab na Meta k úspěšnému potlačení neudržitelného růstu paměti a identifikaci úniků paměti a příležitostí k optimalizaci paměti v našich produktech a infrastruktuře.

Vysoké využití paměti má statisticky významný a negativní dopad na načítání stránky a výkon interakce (jak dlouho trvá načtení stránky nebo provedení interakce)
Metriky zapojení uživatelů (aktivní uživatelé, čas strávený na webu, počet provedených aktivit)

Příčiny úniku paměti při spouštění kódu JavaScript může být přítomnost odkazů na skryté objekty, tak garbage collector nemůže uvolnit paměť obsazený objektem, nepřiměřené ukládání hodnot do mezipaměti nebo implementace nekonečného posouvání bez vyklizení starých položek seznamu.

Například v následujícím kódu Chrome dochází k úniku paměti kvůli objektu „obj“, i když je nastaven na hodnotu null, protože Chrome uchovává interní odkazy na vykreslené objekty, aby je bylo možné později zkontrolovat ve webové konzoli.

Základní operace Memlabu, je následující:

  1. Nejprve detekuje únik paměti v prohlížeči, Memlab vám umožňuje automaticky porovnávat dynamické snímky paměti, detekovat úniky paměti a agregovat výsledky.
  2. Objektově orientované rozhraní API pro procházení haldy, které vám umožňuje implementovat vlastní algoritmy detekce úniků a implementovat systémy pro analýzu snímků 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.
  3. Rozhraní příkazového řádku a API pro nalezení příležitostí k optimalizaci využití paměti.
  4. Systém asercí pro Node.js, který vám umožňuje vytvářet testy jednotek a spouštět programy založené na Node.js pro rozdělení vlastního stavu, testování paměti nebo psaní pokročilých asercí.
  5. Seskupování retenčních tras, MemLab seskupuje všechny retenční stopy dohromady a zobrazuje trasování pro každou skupinu filtrovaných objektů, které sdílejí podobné retenční stopy. Trasování také zahrnuje informace o ladění, jako jsou dominantní uzly a zachované velikosti.
  6. Hlášením úniků lze MemLab spouštět v pravidelných intervalech po celý den a získat tak nepřetržitý signál o regresích paměti. Jakékoli nové regrese jsou přidány na interní řídicí panel, kde se shromažďují a klasifikují sdružené retenční stopy všech zjištěných úniků paměti. Vývojáři pak mohou klepnout a zobrazit vlastnosti objektu v trasování zadržení pro každý únik paměti.

Konečně pokud máte zájem, měli byste vědět, že kód Memlab je open source pod licencí MIT a můžete se o něm dozvědět více Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.