Facebook ga ut kildekoden til memlab

facebook-memlab

MemLab er et rammeverk for å finne JavaScript-minnelekkasjer

Nylig brøt nyheten det Facebook har tatt beslutningen om å frigi kildekoden av verktøysettet memlab, som er designet for å analysere deler av minnetilstanden dynamisk allokert (heap), bestemme en strategi for å optimalisere arbeidet med minne og oppdage minnelekkasjer som oppstår når kjører JavaScript-kode. 

Rammen ble opprettet for å analysere årsakene til høyt minneforbruk når du jobber med nettsider og nettapplikasjoner. For eksempel ble memlab brukt til å analysere minneforbruk ved bruk av en ny versjon av Facebook.com-siden, som avslørte lekkasjer som forårsaket en nettleserkrasj på klientsiden på grunn av utmattelse av ledig minne.

Folk som bruker nettapplikasjonene våre vil ofte legge merke til ytelsesproblemer og funksjonelle rettinger med en gang. Et hukommelsestap er imidlertid en annen historie. Det er ikke umiddelbart merkbart, fordi det bruker én del av minnet om gangen, og påvirker hele nettøkten og gjør påfølgende interaksjoner tregere og mindre responsive.

For å hjelpe utviklerne våre med å løse dette, har vi laget MemLab , et JavaScript-minnetestramme som automatiserer lekkasjedeteksjon og gjør det enkelt å finne minnelekkasjer. Vi har brukt MemLab på Meta for å lykkes med å inneholde uholdbar minnevekst og identifisere minnelekkasjer og minneoptimaliseringsmuligheter i våre produkter og infrastruktur.

Høy minnebruk har en statistisk signifikant og negativ innvirkning på sideinnlasting og interaksjonsytelse (hvor lang tid det tar å laste en side eller utføre en interaksjon)
Beregninger for brukerengasjement (aktive brukere, tid brukt på stedet, antall utførte aktiviteter)

Årsakene til minnelekkasjer når du kjører JavaScript-kode kan være tilstedeværelsen av skjulte objektreferanser, Slik at søppelsamleren kan ikke frigjøre minne okkupert av objektet, urimelig bufring av verdier, eller implementering av uendelig rulling uten å kaste ut gamle listeelementer.

For eksempel, i den følgende Chrome-koden, oppstår minnelekkasjen på grunn av "obj"-objektet, selv om det er satt til null, fordi Chrome beholder interne referanser til de gjengitte objektene slik at de kan inspiseres senere i nettkonsollen.

Den grunnleggende operasjonen til Memlab, er følgende:

  1. Den oppdager minnelekkasje i nettleseren først, Memlab lar deg automatisk sammenligne dynamiske minnebilder, oppdage minnelekkasjer og samle resultater.
  2. Et objektorientert heap-traversal API som lar deg implementere dine egne lekkasjedeteksjonsalgoritmer og implementere systemer for å analysere heap-øyeblikksbilder. Heap-parsing støttes for nettlesere basert på Chromium-motoren, så vel som for plattformene Node.js, Electron og Hermes.
  3. Kommandolinjegrensesnitt og API for å finne muligheter for å optimalisere minnebruken.
  4. Et påstandssystem for Node.js som lar deg lage enhetstester og kjøre Node.js-baserte programmer for å dele din egen tilstand, teste minnet ditt eller skrive avanserte påstander.
  5. Oppbevaringssporgruppering, MemLab grupperer alle oppbevaringsspor sammen og viser et spor for hver gruppe filtrerte objekter som deler lignende oppbevaringsspor. Sporet inkluderer også feilsøkingsinformasjon som dominerende noder og beholdte størrelser.
  6. Ved å rapportere lekkasjer kan MemLab kjøres med jevne mellomrom gjennom dagen for å få et kontinuerlig signal om hukommelsesregresjoner. Eventuelle nye regresjoner legges til et internt dashbord, der samlede oppbevaringsspor av alle oppdagede minnelekkasjer samles og klassifiseres. Utviklere kan deretter klikke og se objektegenskaper i hold-sporet for hver minnelekkasje.

Endelig hvis du er interessert, bør du vite at Memlab-koden er åpen kildekode under MIT-lisensen, og du kan lære mer om det I den følgende lenken.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.