Facebook je objavio izvorni kod memlaba

facebook-memlab

MemLab je okvir za pronalaženje curenja JavaScript memorije

Nedavno je vijest objavila to Facebook je donio odluku da objavi izvorni kod kompleta alata memlab, koji je dizajniran za analizu dijelova stanja memorije dinamički dodijeljena (hrpa), odrediti strategiju za optimizaciju rada s memorijom i otkriti curenje memorije koje se događa kada izvršavanje JavaScript koda. 

Okvir stvoren je za analizu uzroka velike potrošnje memorije kada radite s web stranicama i web aplikacijama. Na primjer, memlab je korišten za analizu potrošnje memorije pri korištenju nove verzije stranice Facebook.com, što je otkrilo curenje podataka koje je uzrokovalo pad preglednika na strani klijenta zbog iscrpljenosti slobodne memorije.

Ljudi koji koriste naše web aplikacije često će odmah primijetiti probleme s izvedbom i funkcionalne popravke. Međutim, gubitak pamćenja je druga priča. Nije odmah vidljivo jer troši jedan po jedan dio memorije, utječući na cijelu web sesiju i čineći naknadne interakcije sporijima i slabijima.

Kako bismo pomogli našim razvojnim programerima da to riješe, stvorili smo MemLab, JavaScript okvir za testiranje memorije koji automatizira otkrivanje curenja i olakšava lociranje curenja memorije. Koristili smo MemLab na Meti kako bismo uspješno obuzdali neodrživi rast memorije i identificirali curenje memorije i mogućnosti optimizacije memorije u našim proizvodima i infrastrukturi.

Velika upotreba memorije ima statistički značajan i negativan utjecaj na učitavanje stranice i izvedbu interakcije (koliko je vremena potrebno za učitavanje stranice ili obavljanje interakcije)
Mjerni podaci o angažmanu korisnika (aktivni korisnici, vrijeme provedeno na stranici, broj obavljenih aktivnosti)

Uzroci curenja memorije prilikom izvršavanja JavaScript koda može biti prisutnost referenci na skrivene objekte, Tako da je sakupljač smeća ne može osloboditi memoriju zauzeo objekt, nerazumno predmemoriranje vrijednosti ili implementacija beskonačnog pomicanja bez izbacivanja starih stavki popisa.

Na primjer, u sljedećem Chromeovom kodu, do curenja memorije dolazi zbog objekta "obj", iako je postavljen na null, jer Chrome čuva interne reference na prikazane objekte kako bi omogućio njihov kasniji pregled na web-konzoli.

Osnovni rad Memlaba, je sljedeće:

  1. Prvo otkriva curenje memorije u pregledniku, Memlab vam omogućuje automatsku usporedbu snimaka dinamičke memorije, otkrivanje curenja memorije i agregiranje rezultata.
  2. Objektno orijentirani API za prolaženje hrpe koji vam omogućuje implementaciju vlastitih algoritama za otkrivanje curenja i implementaciju sustava za raščlanjivanje snimaka hrpe. Raščlanjivanje hrpe podržano je za preglednike temeljene na Chromium motoru, kao i za platforme Node.js, Electron i Hermes.
  3. Sučelje naredbenog retka i API za pronalaženje prilika za optimizaciju upotrebe memorije.
  4. Sustav tvrdnji za Node.js koji vam omogućuje stvaranje jediničnih testova i pokretanje programa temeljenih na Node.js da biste podijelili vlastito stanje, testirali svoju memoriju ili napisali napredne tvrdnje.
  5. Grupiranje tragova zadržavanja, MemLab grupira sve tragove zadržavanja zajedno i prikazuje trag za svaku grupu filtriranih objekata koji dijele slične tragove zadržavanja. Praćenje također uključuje informacije o otklanjanju pogrešaka kao što su dominantni čvorovi i zadržane veličine.
  6. Prijavom curenja podataka, MemLab se može pokrenuti u redovitim intervalima tijekom dana kako bi se dobio kontinuirani signal o regresiji pamćenja. Sve nove regresije dodaju se na internu nadzornu ploču, gdje se objedinjeni tragovi zadržavanja svih otkrivenih curenja memorije prikupljaju i klasificiraju. Programeri zatim mogu kliknuti i vidjeti svojstva objekta u tragu čekanja za svako curenje memorije.

Konačno ako te zanima, trebali biste znati da je Memlab kod otvorenog koda pod MIT licencom i možete saznati više o njemu U sljedećem linku.


Budite prvi koji će komentirati

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.