Facebook zverejnil zdrojový kód memlabu

facebook-memlab

MemLab je rámec na vyhľadávanie únikov pamäte JavaScriptu

To nedávno prelomili správy Facebook sa rozhodol zverejniť zdrojový kód súpravy nástrojov memlab, ktorý je navrhnutý na analýzu častí stavu pamäte dynamicky pridelené (hromada), určiť stratégiu na optimalizáciu práce s pamäťou a odhaliť úniky pamäte, ku ktorým dochádza pri spustenie kódu JavaScript. 

Rámček bol vytvorený na analýzu príčin 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 stránky Facebook.com, ktorá odhalila úniky, ktoré spôsobili zlyhanie prehliadača na strane klienta v dôsledku vyčerpania voľnej pamäte.

Ľudia, ktorí používajú naše webové aplikácie, si často hneď všimnú problémy s výkonom a funkčné opravy. Strata pamäti je však iný príbeh. Nie je to okamžite viditeľné, pretože spotrebuje jeden kus pamäte naraz, čo ovplyvňuje celú webovú reláciu a následné interakcie sú pomalšie a menej citlivé.

Aby sme našim vývojárom pomohli vyriešiť tento problém, vytvorili sme MemLab , rámec na testovanie pamäte JavaScript, ktorý automatizuje detekciu úniku pamäte a uľahčuje lokalizáciu únikov pamäte. Použili sme MemLab na Meta na úspešné zvládnutie neudržateľného rastu pamäte a identifikovanie únikov pamäte a možností optimalizácie pamäte v našich produktoch a infraštruktúre.

Vysoké využitie pamäte má štatisticky významný a negatívny vplyv na načítanie stránky a výkon interakcie (ako dlho trvá načítanie stránky alebo vykonanie interakcie)
Metriky interakcie používateľov (aktívni používatelia, čas strávený na stránke, počet vykonaných aktivít)

Príčiny úniku pamäte pri vykonávaní kódu JavaScript môže byť prítomnosť odkazov na skryté objekty, tak garbage collector nemôže uvoľniť pamäť obsadené objektom, neprimerané ukladanie hodnôt do vyrovnávacej pamäte alebo implementácia nekonečného posúvania bez vyradenia starých položiek zoznamu.

Napríklad v nasledujúcom kóde prehliadača Chrome dochádza k úniku pamäte z dôvodu objektu „obj“, aj keď je nastavený na hodnotu null, pretože prehliadač Chrome uchováva interné odkazy na vykreslené objekty, aby ich bolo možné neskôr skontrolovať vo webovej konzole.

Základná prevádzka Memlabu, je nasledujúce:

  1. Najprv v prehliadači zisťuje únik pamäte, Memlab vám umožňuje automaticky porovnávať snímky dynamickej pamäte, zisťovať úniky pamäte a agregovať výsledky.
  2. Objektovo orientované rozhranie API prechodu haldy, ktoré vám umožňuje implementovať vaše vlastné algoritmy detekcie úniku a implementovať systémy na analýzu snímok haldy. Analýza haldy je podporovaná pre prehliadače založené na motore Chromium, ako aj pre platformy Node.js, Electron a Hermes.
  3. Rozhranie príkazového riadka a API na nájdenie príležitostí na optimalizáciu využitia pamäte.
  4. Systém tvrdení pre Node.js, ktorý vám umožňuje vytvárať testy jednotiek a spúšťať programy založené na Node.js na rozdelenie vlastného stavu, testovanie pamäte alebo písanie pokročilých tvrdení.
  5. Zoskupenie stôp retencie, MemLab zoskupuje všetky retenčné stopy a zobrazuje stopu pre každú skupinu filtrovaných objektov, ktoré zdieľajú podobné retenčné stopy. Sledovanie zahŕňa aj informácie o ladení, ako sú dominantné uzly a zachované veľkosti.
  6. Nahlásením únikov môže byť MemLab spustený v pravidelných intervaloch počas dňa, aby sa získal nepretržitý signál o regresiách pamäte. Akékoľvek nové regresie sa pridajú na interný dashboard, kde sa zhromažďujú a klasifikujú združené retenčné stopy všetkých zistených únikov pamäte. Vývojári potom môžu kliknúť a zobraziť vlastnosti objektu v stope pre každý únik pamäte.

Konečne ak mas zaujem, mali by ste vedieť, že kód Memlab je open source pod licenciou MIT a môžete sa o ňom dozvedieť viac Na nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.