Facebook-rammeverk med åpen kildekode for å oppdage minnelekkasjer i JavaScript

Facebook (forbudt i den russiske føderasjonen) har åpnet kildekoden til memlab-verktøysettet, designet for å analysere deler av tilstanden til dynamisk tildelt minne (heap), bestemme strategier for å optimalisere minnehåndtering og identifisere minnelekkasjer som oppstår når kode utføres i JavaScript. Koden er åpen under MIT-lisensen.

Rammeverket ble laget for å analysere årsakene til høyt minneforbruk ved arbeid med nettsider og nettapplikasjoner. For eksempel ble memlab brukt til å analysere minneforbruk ved bruk av en ny versjon av nettsiden Facebook.com, noe som gjorde det mulig å identifisere lekkasjer som førte til at nettleseren krasjet på klientsiden på grunn av utmattelse av ledig minne.

Årsaker til minnelekkasjer ved utføring av JavaScript-kode kan være skjulte objektreferanser som hindrer søppelsamleren i å frigjøre minnet som er okkupert av objektet, uklokt bufring av verdier eller implementering av uendelig rulling uten å kaste ut gamle listeelementer. For eksempel, i koden nedenfor i Chrome, oppstår det en minnelekkasje på grunn av objektet "obj", til tross for at det er tildelt verdien null, siden Chrome lagrer interne referanser til utdataobjektene for senere inspeksjon i nettkonsollen . var obj = {}; console.log(obj); obj = null;

Hovedtrekk ved memlab:

  • Oppdager minnelekkasjer i nettleseren. Memlab lar deg automatisk sammenligne øyeblikksbilder av dynamisk minnetilstand, oppdage minnelekkasjer og samle resultatene.
  • Et objektorientert API for heap iterasjon, som lar deg implementere dine egne lekkasjedeteksjonsalgoritmer og implementere systemer for å analysere heap state snapshots. Heap-analyse støttes for nettlesere basert på Chromium-motoren, samt for plattformene Node.js, Electron og Hermes.
  • Kommandolinjegrensesnitt og API for å finne muligheter for å optimalisere minnebruken.
  • Et påstandssystem for Node.js som lar deg lage enhetstester og kjøre programmer basert på Node.js for å lage deler av din egen tilstand, teste minnet ditt eller skrive utvidede påstandssjekker.

Kilde: opennet.ru

Legg til en kommentar