Facebook udgav kildekoden til memlab

facebook-memlab

MemLab er en ramme til at finde JavaScript-hukommelseslækager

For nylig brød nyheden det Facebook har taget beslutningen om at frigive kildekoden af værktøjssættet memlab, som er designet til at analysere dele af hukommelsestilstanden dynamisk allokeret (heap), fastlægge en strategi for at optimere arbejdet med hukommelse og opdage hukommelseslækager, der opstår, når udførelse af JavaScript-kode. 

Rammen blev oprettet for at analysere årsagerne til højt hukommelsesforbrug når du arbejder med hjemmesider og webapplikationer. For eksempel blev memlab brugt til at analysere hukommelsesforbrug ved brug af en ny version af Facebook.com-siden, som afslørede lækager, der forårsagede et browsernedbrud på klientsiden på grund af opbrugt ledig hukommelse.

Folk, der bruger vores webapplikationer, vil ofte bemærke ydeevneproblemer og funktionelle rettelser med det samme. Et hukommelsestab er dog en anden historie. Det er ikke umiddelbart bemærkelsesværdigt, fordi det bruger en luns hukommelse ad gangen, påvirker hele websessionen og gør efterfølgende interaktioner langsommere og mindre responsive.

For at hjælpe vores udviklere med at løse dette, har vi skabt MemLab , en JavaScript-hukommelsestestramme, der automatiserer lækagedetektion og gør det nemt at lokalisere hukommelseslækager. Vi har brugt MemLab på Meta til med succes at indeholde uholdbar hukommelsesvækst og identificere hukommelseslækager og muligheder for hukommelsesoptimering i vores produkter og infrastruktur.

Højt hukommelsesforbrug har en statistisk signifikant og negativ indvirkning på sideindlæsning og interaktionsydelse (hvor lang tid det tager at indlæse en side eller udføre en interaktion)
Brugerengagement-metrics (aktive brugere, tid brugt på stedet, antal udførte aktiviteter)

Årsagerne til hukommelseslækager når du udfører JavaScript-kode kan være tilstedeværelsen af ​​skjulte objektreferencer, så garbage collector kan ikke frigøre hukommelse optaget af objektet, urimelig caching af værdier eller implementering af uendelig scroll uden at fjerne gamle listeelementer.

I den følgende Chrome-kode opstår hukommelseslækagen f.eks. på grund af "obj"-objektet, selvom det er sat til null, fordi Chrome gemmer interne referencer til de gengivne objekter for at tillade, at de kan inspiceres senere i webkonsollen.

Den grundlæggende drift af Memlab, er følgende:

  1. Det gør først hukommelseslækagedetektion i browseren, Memlab giver dig mulighed for automatisk at sammenligne dynamiske hukommelsessnapshots, opdage hukommelseslækager og aggregerede resultater.
  2. En objektorienteret heap-traversal API, der giver dig mulighed for at implementere dine egne lækagedetektionsalgoritmer og implementere systemer til at parse heap-snapshots. Heap-parsing er understøttet for browsere baseret på Chromium-motoren såvel som for Node.js-, Electron- og Hermes-platformene.
  3. Kommandolinjegrænseflade og API for at finde muligheder for at optimere hukommelsesforbruget.
  4. Et påstandssystem til Node.js, der giver dig mulighed for at oprette enhedstests og køre Node.js-baserede programmer for at opdele din egen tilstand, teste din hukommelse eller skrive avancerede påstande.
  5. Retentionssporgruppering, MemLab grupperer alle retentionsspor sammen og viser et spor for hver gruppe af filtrerede objekter, der deler lignende retentionsspor. Sporet inkluderer også fejlfindingsinformation såsom dominerende noder og bevarede størrelser.
  6. Ved at rapportere lækager kan MemLab køres med jævne mellemrum i løbet af dagen for at få et kontinuerligt signal om hukommelsesregressioner. Eventuelle nye regressioner føjes til et internt dashboard, hvor poolede tilbageholdelsesspor af alle detekterede hukommelseslækager opsamles og klassificeres. Udviklere kan derefter klikke og se objektegenskaber i hold-sporet for hver hukommelseslæk.

Endelig hvis du er interesseret, bør du vide, at Memlab-koden er open source under MIT-licensen, og du kan lære mere om det I det følgende link.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.