Facebook heeft de broncode van het framework voor het identificeren van geheugenlekken in JavaScript vrijgegeven

Facebook (verboden in de RF) heeft de bronteksten van de memlab-tool vrijgegeven, bedoeld voor de analyse van de toestand van dynamisch toegewezen geheugen (heap), het bepalen van optimalisatiestrategieën voor geheugenbeheer, en het identificeren van geheugenlekken die optreden bij het uitvoeren van code in JavaScript. De code is vrijgegeven onder de MIT-licentie.

Het framework is ontwikkeld om de oorzaken van hoge geheugengebruik bij websites en webapplicaties te onderzoeken. Bijvoorbeeld, met behulp van memlab werd het geheugengebruik geanalyseerd bij het gebruik van de nieuwe versie van Facebook.com, wat leidde tot de identificatie van lekken die de browser aan de clientzijde konden laten crashen door een tekort aan vrij geheugen.

Oorzaken van geheugenlekken bij het uitvoeren van JavaScript-code kunnen verborgen verwijzingen naar objecten zijn, waardoor de garbage collector het geheugen dat door het object in gebruik is niet kan vrijgeven, onverstandige caching van waarden of de implementatie van oneindige scroll zonder het verwijderen van oude lijstitems. Bijvoorbeeld, in de onderstaande code in Chrome ontstaat er een geheugenlek door het object 'obj', ondanks dat het de waarde null krijgt, omdat Chrome interne verwijzingen naar weergegeven objecten behoudt voor de mogelijkheid om deze later in de webconsole te inspecteren. var obj = {}; console.log(obj); obj = null;

Belangrijkste functies van memlab:

  • Identificatie van geheugenlekken in de browser. Memlab maakt automatisch vergelijkingen van snapshots van dynamisch geheugen mogelijk, identificeert geheugenlekken en aggregeert resultaten.
  • Objectgeoriënteerde API voor het doorlopen van de heap, waarmee je eigen algoritmes voor het ontdekken van lekken kunt implementeren en systemen voor de analyse van heap-snapshots kunt realiseren. Analyse van de heap wordt ondersteund voor browsers op basis van de Chromium-engine, evenals voor Node.js-, Electron- en Hermes-platforms.
  • Commando-interface en API voor het vinden van optimalisatiemogelijkheden voor geheugengebruik.
  • Assert-systeem voor Node.js, waarmee je unit tests kunt maken en programma's kunt uitvoeren op basis van Node.js om snapshots van je eigen toestand te maken, je geheugen te controleren of uitgebreide assert-controles te schrijven.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster