Facebook open source-ramme til at opdage hukommelseslækager i JavaScript

Facebook (forbudt i Den Russiske Føderation) har åbnet kildekoden til memlab-værktøjssættet, designet til at analysere udsnit af tilstanden af ​​dynamisk allokeret hukommelse (heap), bestemme strategier til optimering af hukommelseshåndtering og identificere hukommelseslækager, der opstår, når kode udføres i JavaScript. Koden er åben under MIT-licensen.

Rammen blev skabt for at analysere årsagerne til højt hukommelsesforbrug, når man arbejder med hjemmesider og webapplikationer. Eksempelvis blev memlab brugt til at analysere hukommelsesforbrug ved brug af en ny version af hjemmesiden Facebook.com, hvilket gjorde det muligt at identificere lækager, der førte til, at browseren styrtede ned på klientsiden på grund af opbrugt ledig hukommelse.

Årsager til hukommelseslækager ved udførelse af JavaScript-kode kan være skjulte objektreferencer, der forhindrer skraldopsamleren i at frigøre hukommelsen optaget af objektet, uklog caching af værdier eller implementering af uendelig scrolling uden at fjerne gamle listeelementer. For eksempel, i koden nedenfor i Chrome, opstår der en hukommelseslækage på grund af objektet "obj", på trods af at det er tildelt værdien null, da Chrome gemmer interne referencer til output-objekterne til senere inspektion i webkonsollen . var obj = {}; console.log(obj); obj = null;

Hovedtræk ved memlab:

  • Registrerer hukommelseslækager i browseren. Memlab giver dig mulighed for automatisk at sammenligne snapshots af dynamisk hukommelsestilstand, opdage hukommelseslækager og aggregere resultaterne.
  • Et objektorienteret API til heap iteration, der giver dig mulighed for at implementere dine egne lækagedetektionsalgoritmer og implementere systemer til analyse af heap state snapshots. Heap-analyse understøttes for browsere baseret på Chromium-motoren såvel som for Node.js-, Electron- og Hermes-platformene.
  • Kommandolinjegrænseflade og API til at finde muligheder for at optimere hukommelsesforbruget.
  • Et assert-system til Node.js, der giver dig mulighed for at oprette enhedstests og køre programmer baseret på Node.js for at oprette udsnit af din egen tilstand, teste din hukommelse eller skrive udvidede assert-checks.

Kilde: opennet.ru

Tilføj en kommentar