Facebook heeft de broncode van memlab vrijgegeven

facebook-memlab

MemLab is een raamwerk voor het vinden van JavaScript-geheugenlekken

Dat maakte onlangs het nieuws bekend Facebook heeft de beslissing genomen om de broncode vrij te geven van de gereedschapskist memlabdat is ontworpen om delen van de geheugenstatus te analyseren dynamisch toegewezen (heap), een strategie bepalen om het werk met geheugen te optimaliseren en geheugenlekken detecteren die optreden wanneer JavaScript-code uitvoeren. 

Het kader is gemaakt om de oorzaken van een hoog geheugengebruik te analyseren bij het werken met websites en webapplicaties. Memlab werd bijvoorbeeld gebruikt om het geheugenverbruik te analyseren bij het gebruik van een nieuwe versie van de Facebook.com-site, die lekken aan het licht bracht die een client-side browsercrash veroorzaakten als gevolg van uitputting van vrij geheugen.

Mensen die onze webapplicaties gebruiken, zullen vaak prestatieproblemen en functionele oplossingen meteen opmerken. Een geheugenverlies is echter een ander verhaal. Het is niet meteen merkbaar, omdat het een stuk geheugen per keer in beslag neemt, waardoor de hele websessie wordt beïnvloed en de daaropvolgende interacties langzamer en minder responsief worden.

Om onze ontwikkelaars te helpen dit aan te pakken, hebben we MemLab ontwikkeld, een JavaScript-raamwerk voor geheugentests dat lekdetectie automatiseert en het gemakkelijk maakt om geheugenlekken te lokaliseren. We hebben MemLab op Meta gebruikt om met succes onhoudbare geheugengroei in te dammen en geheugenlekken en geheugenoptimalisatiemogelijkheden in onze producten en infrastructuur te identificeren.

Hoog geheugengebruik heeft een statistisch significante en negatieve invloed op het laden van pagina's en interactieprestaties (hoe lang het duurt om een ​​pagina te laden of een interactie uit te voeren)
Statistieken voor gebruikersbetrokkenheid (actieve gebruikers, tijd doorgebracht op de site, aantal uitgevoerde activiteiten)

De oorzaken van geheugenlekken bij het uitvoeren van JavaScript-code kan de aanwezigheid van verborgen objectverwijzingen zijn, dus vuilnisophaler kan geen geheugen vrijmaken bezet door het object, onredelijke cache van waarden of het implementeren van oneindig scrollen zonder oude lijstitems te verwijderen.

In de volgende Chrome-code treedt het geheugenlek bijvoorbeeld op vanwege het object 'obj', hoewel dit is ingesteld op null, omdat Chrome interne verwijzingen naar de weergegeven objecten bewaart zodat ze later in de webconsole kunnen worden geïnspecteerd.

De basiswerking van Memlab, hij is zeker:

  1. Het doet eerst geheugenlekdetectie in de browser, Memlab stelt u in staat om automatisch dynamische geheugensnapshots te vergelijken, geheugenlekken te detecteren en resultaten samen te voegen.
  2. Een objectgeoriënteerde heap traversal-API waarmee u uw eigen lekdetectie-algoritmen kunt implementeren en systemen kunt implementeren voor het ontleden van heap-snapshots. Heap-parsing wordt ondersteund voor browsers op basis van de Chromium-engine, evenals voor de Node.js-, Electron- en Hermes-platforms.
  3. Opdrachtregelinterface en API om mogelijkheden te vinden om het geheugengebruik te optimaliseren.
  4. Een beweringsysteem voor Node.js waarmee u eenheidstests kunt maken en op Node.js gebaseerde programma's kunt uitvoeren om uw eigen status te splitsen, uw geheugen te testen of geavanceerde beweringen te schrijven.
  5. Retentiespoorgroepering, MemLab groepeert alle bewaarsporen samen en geeft een spoor weer voor elke groep gefilterde objecten die vergelijkbare bewaarsporen delen. De tracering bevat ook foutopsporingsinformatie zoals dominante knooppunten en behouden grootten.
  6. Door lekken te melden, kan MemLab met regelmatige tussenpozen gedurende de dag worden uitgevoerd om een ​​continu signaal te krijgen over geheugenregressies. Alle nieuwe regressies worden toegevoegd aan een intern dashboard, waar gepoolde retentiesporen van alle gedetecteerde geheugenlekken worden verzameld en geclassificeerd. Ontwikkelaars kunnen vervolgens klikken en objecteigenschappen bekijken in de hold-trace voor elk geheugenlek.

Eindelijk als je geïnteresseerd bent, u moet weten dat Memlab-code open source is onder de MIT-licentie en u kunt er meer over leren In de volgende link.


Wees de eerste om te reageren

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.