Facebook hat den Quellcode von Memlab veröffentlicht

facebook-memlab

MemLab ist ein Framework zum Auffinden von JavaScript-Speicherlecks

Kürzlich haben die Nachrichten das verbreitet Facebook hat die Entscheidung getroffen, den Quellcode freizugeben des Werkzeugkastens Memlabwelches ist entwickelt, um Teile des Speicherzustands zu analysieren dynamisch zugewiesen (Heap), bestimmen Sie eine Strategie zur Optimierung der Arbeit mit Speicher und erkennen Sie Speicherlecks, die auftreten, wenn Ausführen von JavaScript-Code. 

Der Rahmen wurde erstellt, um die Ursachen für hohen Speicherverbrauch zu analysieren bei der Arbeit mit Websites und Webanwendungen. Beispielsweise wurde Memlab verwendet, um den Speicherverbrauch bei der Verwendung einer neuen Version der Website Facebook.com zu analysieren, die Lecks aufdeckte, die einen clientseitigen Browserabsturz aufgrund der Erschöpfung des freien Speichers verursachten.

Personen, die unsere Webanwendungen verwenden, werden Leistungsprobleme und funktionale Korrekturen oft sofort bemerken. Ein Gedächtnisverlust ist jedoch eine andere Geschichte. Dies fällt nicht sofort auf, da es jeweils einen Speicherplatz verbraucht, die gesamte Websitzung beeinträchtigt und nachfolgende Interaktionen langsamer und weniger reaktionsschnell macht.

Um unseren Entwicklern dabei zu helfen, dieses Problem anzugehen, haben wir MemLab entwickelt, ein Framework zum Testen von JavaScript-Speichern, das die Leckerkennung automatisiert und das Auffinden von Speicherlecks vereinfacht. Wir haben MemLab auf Meta eingesetzt, um unhaltbares Speicherwachstum erfolgreich einzudämmen und Speicherlecks und Möglichkeiten zur Speicheroptimierung in unseren Produkten und unserer Infrastruktur zu identifizieren.

Eine hohe Speicherauslastung hat einen statistisch signifikanten und negativen Einfluss auf das Laden der Seite und die Interaktionsleistung (wie lange es dauert, eine Seite zu laden oder eine Interaktion durchzuführen).
Kennzahlen zur Benutzerinteraktion (aktive Benutzer, auf der Website verbrachte Zeit, Anzahl der durchgeführten Aktivitäten)

Die Ursachen von Speicherlecks beim Ausführen von JavaScript-Code kann das Vorhandensein von Verweisen auf versteckte Objekte seinDeshalb Garbage Collector kann keinen Speicher freigeben durch das Objekt belegt, unangemessenes Zwischenspeichern von Werten oder das Implementieren von unendlichem Scrollen, ohne alte Listenelemente zu entfernen.

Im folgenden Chrome-Code tritt das Speicherleck beispielsweise aufgrund des Objekts „obj“ auf, obwohl es auf null gesetzt ist, da Chrome interne Verweise auf die gerenderten Objekte beibehält, damit sie später in der Webkonsole überprüft werden können.

Die grundlegende Funktionsweise von Memlab, Es ist das Folgende:

  1. Es erkennt Speicherlecks zuerst im Browser, Memlab ermöglicht es Ihnen, dynamische Speicherschnappschüsse automatisch zu vergleichen, Speicherlecks zu erkennen und Ergebnisse zu aggregieren.
  2. Eine objektorientierte Heap-Traversal-API, mit der Sie Ihre eigenen Leckerkennungsalgorithmen implementieren und Systeme zum Analysieren von Heap-Snapshots implementieren können. Heap-Parsing wird für Browser unterstützt, die auf der Chromium-Engine basieren, sowie für die Plattformen Node.js, Electron und Hermes.
  3. Befehlszeilenschnittstelle und API, um Möglichkeiten zur Optimierung der Speichernutzung zu finden.
  4. Ein Assertionssystem für Node.js, mit dem Sie Unit-Tests erstellen und Node.js-basierte Programme ausführen können, um Ihren eigenen Zustand aufzuteilen, Ihren Speicher zu testen oder erweiterte Assertionen zu schreiben.
  5. Retention Trace Gruppierung: MemLab gruppiert alle Retention Traces zusammen und zeigt einen Trace für jede Gruppe von gefilterten Objekten an, die ähnliche Retention Traces aufweisen. Die Ablaufverfolgung enthält auch Debugging-Informationen wie dominierende Knoten und beibehaltene Größen.
  6. Durch das Melden von Lecks kann MemLab den ganzen Tag über in regelmäßigen Abständen ausgeführt werden, um ein kontinuierliches Signal über Speicherregressionen zu erhalten. Alle neuen Regressionen werden einem internen Dashboard hinzugefügt, in dem gepoolte Aufbewahrungsspuren aller erkannten Speicherlecks gesammelt und klassifiziert werden. Entwickler können dann auf Objekteigenschaften im Hold-Trace für jedes Speicherleck klicken und es anzeigen.

Schließlich wenn Sie interessiert sind, sollten Sie wissen, dass Memlab-Code Open Source unter der MIT-Lizenz ist, und Sie können mehr darüber erfahren im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.