Facebook julkaisi memlabin lähdekoodin

Facebook-muistilappu

MemLab on kehys JavaScript-muistivuotojen etsimiseen

Äskettäin uutiset rikkoivat sen Facebook on päättänyt julkaista lähdekoodin työkalusarjasta memlab, mikä on suunniteltu analysoimaan muistitilan osia dynaamisesti allokoitu (kasa), määrittää strategia muistityön optimoimiseksi ja havaita muistivuodot, jotka tapahtuvat suorittaa JavaScript-koodia. 

Kehys luotiin analysoimaan korkean muistinkulutuksen syitä kun työskentelet verkkosivustojen ja verkkosovellusten kanssa. Memlabia käytettiin esimerkiksi muistin kulutuksen analysointiin käytettäessä Facebook.com-sivuston uutta versiota, joka paljasti vuotoja, jotka aiheuttivat asiakaspuolen selaimen kaatumisen vapaan muistin loppumisen vuoksi.

Verkkosovelluksiamme käyttävät ihmiset huomaavat usein suorituskykyongelmia ja toiminnallisia korjauksia heti. Muistin menetys on kuitenkin eri tarina. Se ei ole heti havaittavissa, koska se kuluttaa yhden palan muistia kerrallaan, mikä vaikuttaa koko verkkoistuntoon ja tekee myöhemmistä vuorovaikutuksista hitaampaa ja vähemmän reagoivaa.

Auttaaksemme kehittäjiämme korjaamaan tämän, loimme MemLabin, JavaScript-muistin testauskehyksen, joka automatisoi vuotojen havaitsemisen ja helpottaa muistivuotojen paikallistamista. Olemme käyttäneet MemLab on Meta onnistuneesti hillitsemään kestämätöntä muistin kasvua ja tunnistamaan muistivuotoja ja muistin optimointimahdollisuuksia tuotteissamme ja infrastruktuurissamme.

Korkealla muistin käytöllä on tilastollisesti merkittävä ja negatiivinen vaikutus sivun lataukseen ja vuorovaikutuksen tehokkuuteen (kuinka kauan sivun lataaminen tai vuorovaikutuksen suorittaminen kestää)
Käyttäjien sitoutumismittarit (aktiiviset käyttäjät, sivustolla käytetty aika, suoritettujen toimintojen määrä)

Muistivuotojen syyt kun suoritat JavaScript-koodia voi olla piilotettujen objektiviittausten läsnäolo, niin roskakori ei voi vapauttaa muistia objektin varaama, arvojen kohtuuton välimuisti tai äärettömän vierityksen toteuttaminen poistamatta vanhoja luettelokohteita.

Esimerkiksi seuraavassa Chrome-koodissa muistivuoto johtuu "obj"-objektista, vaikka se on asetettu tyhjäksi, koska Chrome säilyttää sisäiset viittaukset renderöityihin objekteihin, jotta ne voidaan tarkistaa myöhemmin verkkokonsolissa.

Memlabin perustoiminta, on seuraava:

  1. Se havaitsee muistivuotoja ensin selaimessa, Memlab antaa sinun verrata automaattisesti dynaamisia muistin tilannekuvia, havaita muistivuotoja ja koota tuloksia.
  2. Oliokeskeinen keon läpikulkusovellusliittymä, jonka avulla voit toteuttaa omia vuotojen havaitsemisalgoritmeja ja toteuttaa järjestelmiä keon tilannekuvien jäsentämiseksi. Keon jäsentämistä tuetaan Chromium-moottoriin perustuvissa selaimissa sekä Node.js-, Electron- ja Hermes-alustoissa.
  3. Komentorivikäyttöliittymä ja API löytääksesi mahdollisuuksia optimoida muistin käyttöä.
  4. Node.js:n vahvistusjärjestelmä, jonka avulla voit luoda yksikkötestejä ja ajaa Node.js-pohjaisia ​​ohjelmia oman tilan jakamiseen, muistin testaamiseen tai kehittyneiden väitteiden kirjoittamiseen.
  5. Säilytysjälkien ryhmittely, MemLab ryhmittelee kaikki säilytysjäljet ​​yhteen ja näyttää jäljen jokaisesta suodatettujen objektien ryhmästä, jolla on samanlaiset säilytysjäljet. Jäljitys sisältää myös virheenkorjaustietoja, kuten hallitsevat solmut ja säilytetyt koot.
  6. Raportoimalla vuodoista MemLabia voidaan ajaa säännöllisin väliajoin pitkin päivää, jotta saadaan jatkuva signaali muistin regressioista. Kaikki uudet regressiot lisätään sisäiseen kojelautaan, jossa kerätään ja luokitellaan kaikkien havaittujen muistivuotojen yhdistetyt säilytysjäljet. Kehittäjät voivat sitten napsauttaa ja tarkastella objektin ominaisuuksia pitojäljessä jokaisen muistivuodon kohdalla.

Vihdoin jos olet kiinnostunut, sinun pitäisi tietää, että Memlab-koodi on avoimen lähdekoodin MIT-lisenssillä ja voit oppia siitä lisää Seuraavassa linkissä.


Artikkelin sisältö noudattaa periaatteita toimituksellinen etiikka. Ilmoita virheestä napsauttamalla täällä.

Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista.

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.