Facebook hat den Quellcode des Frameworks zur Erkennung von Speicherlecks in JavaScript veröffentlicht.

Das Unternehmen Facebook (in Russland verboten) hat den Quellcode des Tools memlab veröffentlicht, das zur Analyse von Zustandsausschnitten des dynamisch zugewiesenen Speichers (Heap) dient, um Optimierungsstrategien für den Speicherzugriff zu bestimmen und Speicherlecks zu identifizieren, die auftreten, wenn JavaScript-Code ausgeführt wird. Der Code ist unter der MIT-Lizenz veröffentlicht.

Das Framework wurde entwickelt, um die Ursachen eines hohen Speicherverbrauchs bei der Nutzung von Websites und Webanwendungen zu untersuchen. So wurde beispielsweise mit memlab der Speicherverbrauch der neuen Version von Facebook.com analysiert, was es ermöglichte, Speicherlecks zu entdecken, die zu einem Absturz des Browsers auf der Client-Seite führten, da der verfügbare Speicher erschöpft war.

Ursachen für Speicherlecks bei der Ausführung von JavaScript-Code können versteckte Referenzen auf Objekte sein, die verhindern, dass der Garbage Collector den vom Objekt belegten Speicher freigibt, unangemessene Zwischenspeicherung von Werten oder die Implementierung einer unendlichen Bildlaufzeit ohne das Ablösen alter Listenelemente. Im folgenden Beispielcode tritt in Chrome ein Speicherleck aufgrund des Objekts "obj" auf, obwohl es auf null gesetzt wird, da Chrome interne Referenzen auf die ausgegebenen Objekte speichert, um deren spätere Inspektion in der Web-Konsole zu ermöglichen. var obj = {}; console.log(obj); obj = null;

Die Hauptfunktionen von memlab:

  • Erkennung von Speicherlecks im Browser. Memlab ermöglicht das automatische Vergleichen von Momentaufnahmen des dynamischen Speichers, das Erkennen von Speicherlecks und die Aggregation der Ergebnisse.
  • Objektorientierte API zum Durchlaufen des Heaps, die erlaubt, eigene Algorithmen zur Erkennung von Lecks zu implementieren und Systeme zur Analyse von Heap-Snapshots zu realisieren. Die Heap-Analyse wird für Browser auf Basis der Chromium-Engine sowie für die Plattformen Node.js, Electron und Hermes unterstützt.
  • Befehlszeilen- und API-Schnittstelle zur Analyse von Möglichkeiten zur Optimierung der Speichernutzung.
  • Das Assert-System für Node.js ermöglicht das Erstellen von Unit-Tests und das Ausführen von Node.js-Anwendungen, um Zustands-Snaps zu erstellen, den Speicher zu überprüfen oder erweiterte Assert-Prüfungen zu schreiben.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster