A Facebook kiadta a memlab forráskódját

facebook-memlab

A MemLab egy keretrendszer a JavaScript memóriaszivárgások felderítésére

Nemrégiben a hír ezt megszakította A Facebook úgy döntött, hogy kiadja a forráskódot a szerszámkészletből memlab, ami A memória állapotának egyes részeinek elemzésére tervezték dinamikusan allokálva (halom), meghatározza a memóriával végzett munka optimalizálásának stratégiáját, és észleli a memóriaszivárgást, ha JavaScript kód futtatása. 

A keret azért jött létre, hogy elemezze a magas memóriafelhasználás okait amikor webhelyekkel és webes alkalmazásokkal dolgozik. Például a memlab-ot a memóriafelhasználás elemzésére használták a Facebook.com oldal új verziójának használatakor, amely olyan szivárgásokat tárt fel, amelyek kliensoldali böngésző összeomlását okozták a szabad memória kimerülése miatt.

A webalkalmazásainkat használó emberek gyakran azonnal észreveszik a teljesítménybeli problémákat és a funkcionális javításokat. A memóriavesztés azonban egy másik történet. Ez nem azonnal észrevehető, mert egyszerre egy darab memóriát foglal el, ami kihat a teljes webes munkamenetre, és lassabbá és kevésbé reagálóvá teszi a későbbi interakciókat.

Hogy segítsünk fejlesztőinknek ennek megoldásában, létrehoztuk a MemLab JavaScript-memóriatesztelő keretrendszert, amely automatizálja a szivárgásészlelést, és megkönnyíti a memóriaszivárgások felkutatását. A MemLab on Meta segítségével sikeresen megfékeztük a fenntarthatatlan memórianövekedést, és azonosítottuk a memóriaszivárgásokat, valamint a memóriaoptimalizálási lehetőségeket termékeinkben és infrastruktúránkban.

A magas memóriahasználat statisztikailag szignifikáns és negatív hatással van az oldalbetöltésre és az interakciós teljesítményre (mennyi ideig tart egy oldal betöltése vagy interakció végrehajtása)
Felhasználói elköteleződési mutatók (aktív felhasználók, a helyszínen eltöltött idő, elvégzett tevékenységek száma)

A memóriazavarok okai JavaScript kód futtatásakor rejtett objektumhivatkozások jelenléte lehet, így a szemétgyűjtő nem tud memóriát felszabadítani az objektum által elfoglalt, az értékek indokolatlan gyorsítótárazása, vagy a végtelen görgetés megvalósítása a régi listaelemek kiürítése nélkül.

Például a következő Chrome-kódban a memóriaszivárgás az „obj” objektum miatt következik be, annak ellenére, hogy nullára van állítva, mivel a Chrome megtartja a belső hivatkozásokat a megjelenített objektumokra, hogy később ellenőrizni lehessen őket a webkonzolon.

A Memlab alapvető működése, a következő:

  1. Először memóriaszivárgás-észlelést végez a böngészőben, a Memlab lehetővé teszi a dinamikus memória-pillanatképek automatikus összehasonlítását, a memóriaszivárgás észlelését és az eredmények összesítését.
  2. Objektumorientált kupacbejárási API, amely lehetővé teszi saját szivárgásészlelési algoritmusok megvalósítását és rendszerek megvalósítását a kupac pillanatképeinek elemzéséhez. A kupacelemzést a Chromium-motoron alapuló böngészők, valamint a Node.js, Electron és Hermes platformok támogatják.
  3. Parancssori felület és API a memóriahasználat optimalizálásának lehetőségeinek megtalálásához.
  4. A Node.js állítási rendszere, amely lehetővé teszi egységtesztek létrehozását és Node.js-alapú programok futtatását saját állapotának felosztására, a memória tesztelésére vagy speciális állítások írására.
  5. A megőrzési nyomkövetés csoportosítása, a MemLab az összes megőrzési nyomot egybe csoportosítja, és egy nyomkövetést jelenít meg a hasonló megőrzési nyomokat megosztó szűrt objektumok minden csoportjához. A nyomkövetés olyan hibakeresési információkat is tartalmaz, mint például az uralkodó csomópontok és a megtartott méretek.
  6. A szivárgások jelentésével a MemLab rendszeres időközönként futtatható a nap folyamán, hogy folyamatos jelet kapjon a memória regressziójáról. Minden új regresszió hozzáadódik egy belső irányítópulthoz, ahol az összes észlelt memóriaszivárgás egyesített megőrzési nyomait összegyűjti és osztályozza. A fejlesztők ezután rákattinthatnak, és megtekinthetik az objektum tulajdonságait a tartási nyomkövetésben minden memóriaszivárgás esetén.

Végül ha érdekel, tudnia kell, hogy a Memlab kód nyílt forráskódú az MIT licence alatt, és többet megtudhat róla A következő linken.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.