Företaget Facebook (förbjudet i RF) har slÀppt kÀllkoden för verktyget memlab, som Àr avsett för att analysera tillstÄndet hos dynamiskt fördelat minne (heap), bestÀmma strategier för att optimera minnesanvÀndning och identifiera minneslÀckor som uppstÄr vid körning av kod skriven i JavaScript. Koden Àr öppen under MIT-licensen.
Ramen skapades för att granska orsakerna till hög minnesanvÀndning vid arbete med webbplatser och webbapplikationer. Till exempel genomfördes en analys av minnesanvÀndningen vid anvÀndning av den nya versionen av Facebook.com med hjÀlp av memlab, vilket ledde till att man upptÀckte minneslÀckor som orsakade att webblÀsaren pÄ klientsidan kraschade pÄ grund av brist pÄ ledigt minne.
Orsakerna till minneslÀckor vid körning av JavaScript-kod kan vara förekomsten av dolda referenser till objekt, vilket gör att skrÀpsamlaren inte kan frigöra minne som upptas av objektet, oklokt cachande av vÀrden eller implementering av oÀndlig scrollbar utan att ta bort gamla element frÄn listan. Till exempel i nedanstÄende kod uppstÄr en minneslÀcka i Chrome pÄ grund av objektet 'obj', trots att det tilldelas vÀrdet null, eftersom Chrome sparar interna referenser till de visade objekten för att möjliggöra senare inspektion i webbkonsolen. var obj = {}; console.log(obj); obj = null;
Huvudfunktioner i memlab:
- Identifiering av minneslÀckor i webblÀsaren. Memlab gör det möjligt att automatiskt jÀmföra snapshots av dynamiskt minnestillstÄnd, identifiera minneslÀckor och aggregat resultat.
- Objektorienterat API för att iterera över heapen, vilket möjliggör implementering av egna algoritmer för att upptÀcka lÀckor och genomföra analys av heap-snapshots. Heap-analys stöds för webblÀsare baserade pÄ Chromium-motorn, samt för plattformar som Node.js, Electron och Hermes.
- KommandoradsgrÀnssnitt och API för att finna möjligheter att optimera minnesanvÀndning.
- Ett pÄstÄendesystem för Node.js, som gör det möjligt att skapa enhetstester och köra program baserade pÄ Node.js för att skapa snapshots av eget tillstÄnd, kontrollera sitt minne eller skriva avancerade pÄstÄende- kontroller.
KĂ€lla: opennet.ru
