Facebook avaldas memlabi lähtekoodi

Facebooki mälupulk

MemLab on raamistik JavaScripti mälulekke leidmiseks

Hiljuti teade sellest Facebook on teinud otsuse lähtekoodi välja anda tööriistakomplektist memlab, mis on mõeldud mälu oleku osade analüüsimiseks dünaamiliselt jaotatud (hunnik), määrake strateegia mäluga töö optimeerimiseks ja tuvastage mälulekked, mis tekivad JavaScripti koodi käivitamine. 

raames loodi suure mälutarbimise põhjuste analüüsimiseks veebisaitide ja veebirakendustega töötamisel. Näiteks kasutati memlabi mälutarbimise analüüsimiseks saidi Facebook.com uue versiooni kasutamisel, mis paljastas lekked, mis põhjustasid vaba mälu ammendumise tõttu kliendipoolse brauseri krahhi.

Meie veebirakendusi kasutavad inimesed märkavad sageli jõudlusprobleeme ja funktsionaalseid parandusi kohe. Mälukaotus on aga hoopis teine ​​lugu. See ei ole kohe märgatav, sest see kulutab korraga ühe mälumahu, mõjutades kogu veebiseanssi ning muutes järgnevad suhtlused aeglasemaks ja vähem reageerivaks.

Et aidata meie arendajatel seda probleemi lahendada, lõime JavaScripti mälu testimise raamistiku MemLabi, mis automatiseerib lekete tuvastamise ja muudab mälulekke asukoha leidmise lihtsaks. Oleme kasutanud MemLab on Meta, et edukalt ohjeldada jätkusuutmatut mälukasvu ning tuvastada mälulekkeid ja mälu optimeerimise võimalusi meie toodetes ja infrastruktuuris.

Kõrgel mälukasutusel on statistiliselt oluline ja negatiivne mõju lehe laadimisele ja interaktsiooni toimivusele (kui kaua kulub lehe laadimiseks või interaktsiooni sooritamiseks)
Kasutajate seotuse mõõdikud (aktiivsed kasutajad, saidil veedetud aeg, sooritatud tegevuste arv)

Mälu lekke põhjused JavaScripti koodi käivitamisel võib olla peidetud objektiviidete olemasolunii et prügikoguja ei saa mälu vabastada objekti poolt hõivatud, väärtuste ebamõistlik vahemällu salvestamine või lõpmatu kerimise rakendamine ilma vanu loendi üksusi välja tõstmata.

Näiteks järgmises Chrome'i koodis esineb mäluleke objekti "obj" tõttu, kuigi see on nulliks, kuna Chrome säilitab sisemised viited renderdatud objektidele, et võimaldada neid hiljem veebikonsoolis kontrollida.

Memlabi põhitegevus, on järgmine:

  1. See tuvastab esmalt brauseris mälulekke, Memlab võimaldab teil automaatselt võrrelda dünaamilise mälu hetktõmmiseid, tuvastada mälulekkeid ja koondada tulemusi.
  2. Objektorienteeritud kuhja läbimise API, mis võimaldab teil rakendada oma lekketuvastusalgoritme ja juurutada süsteeme kuhja hetktõmmiste sõelumiseks. Kuhja sõelumist toetavad Chromiumi mootoril põhinevad brauserid, samuti platvormid Node.js, Electron ja Hermes.
  3. Käsurea liides ja API, et leida võimalusi mälukasutuse optimeerimiseks.
  4. Node.js-i kinnitussüsteem, mis võimaldab teil luua ühikuteste ja käivitada Node.js-põhiseid programme, et jagada oma olekut, testida mälu või kirjutada täpsemaid väiteid.
  5. Säilitusjälgede rühmitamine, MemLab rühmitab kõik säilitusjäljed kokku ja kuvab jälje iga filtreeritud objektide rühma kohta, millel on sarnased säilitusjäljed. Jälg sisaldab ka silumisinfot, nagu domineerivad sõlmed ja säilinud suurused.
  6. Leketest teatades saab MemLabi korrapäraste ajavahemike järel kogu päeva jooksul käivitada, et saada pidev signaal mälu regressioonide kohta. Kõik uued regressioonid lisatakse sisemisele armatuurlauale, kus kogutakse ja klassifitseeritakse kõigi tuvastatud mälulekete koondatud säilitusjäljed. Seejärel saavad arendajad klõpsata ja iga mälulekke puhul ootejäljes objekti atribuute vaadata.

Lõpuks kui oled huvitatud, peaksite teadma, et Memlabi kood on avatud lähtekoodiga MIT-i litsentsi all ja saate selle kohta lisateavet Järgmisel lingil.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.