Facebook iepen boarne ramt om ûnthâldlekken yn JavaScript te detektearjen

Facebook (ferbean yn 'e Russyske Federaasje) hat de boarnekoade fan' e memlab toolkit iepene, ûntworpen om dielen fan 'e steat fan dynamysk tawiisd ûnthâld (heap) te analysearjen, strategyen foar it optimalisearjen fan ûnthâldbehear te bepalen en ûnthâldlekken te identifisearjen dy't foarkomme by it útfieren fan koade yn JavaSkript. De koade is iepen ûnder de MIT-lisinsje.

It ramt is makke om de redenen te analysearjen foar hege ûnthâldferbrûk by it wurkjen mei websiden en webapplikaasjes. Bygelyks, memlab waard brûkt om te analysearjen ûnthâld konsumpsje by it brûken fan in nije ferzje fan de Facebook.com webside, dy't makke it mooglik om te identifisearjen lekken dy't late ta de blêder crashing op de kliïnt kant fanwege de útputting fan frije ûnthâld.

De oarsaken fan lekkage fan ûnthâld by it útfieren fan JavaScript-koade kinne ferburgen objektferwizings wêze dy't foarkomme dat de garbage collector it ûnthâld dat beset wurdt troch it objekt, ûnferstannich caching fan wearden, of ymplemintaasje fan ûneinich rôlje sûnder âlde list-eleminten te ferwiderjen. Bygelyks, yn 'e koade hjirûnder yn Chrome, komt in ûnthâldlek foar troch it objekt "obj", nettsjinsteande it feit dat it de wearde fan nul wurdt tawiisd, om't Chrome ynterne ferwizings nei de útfierobjekten opslaan foar letter ynspeksje yn 'e webkonsole . var obj = {}; console.log(obj); obj = null;

Haadfunksjes fan memlab:

  • Detecting ûnthâld lekken yn 'e browser. Memlab lit jo automatysk snapshots fan dynamyske ûnthâldstatus fergelykje, ûnthâldlekken detectearje en de resultaten aggregearje.
  • In objekt-rjochte API foar heap-iteraasje, wêrtroch jo jo eigen algoritme foar lekdeteksje kinne ymplementearje en systemen ymplementearje foar it analysearjen fan snapshots fan heapstatus. Heapanalyse wurdt stipe foar browsers basearre op de Chromium-motor, lykas foar de Node.js, Electron en Hermes-platfoarms.
  • Kommandorigelynterface en API foar it finen fan kânsen om ûnthâldgebrûk te optimalisearjen.
  • In assertsysteem foar Node.js wêrmei jo ienheidstests kinne oanmeitsje en programma's útfiere basearre op Node.js om plakjes fan jo eigen steat te meitsjen, jo ûnthâld te testen of útwreide assertkontrôles te skriuwen.

Boarne: opennet.ru

Add a comment