Facebook udostępnił kod frameworka do wykrywania wycieków pamięci w JavaScript

Firma Facebook (zakazana w Rosji) udostępniła źródłowe kody narzędzia memlab, które jest przeznaczone do analizy przekrojów stanu dynamicznie alokowanej pamięci (stosu), określania strategii optymalizacji pracy z pamięcią oraz wykrywania wycieków pamięci, które pojawiają się podczas wykonywania kodu w języku JavaScript. Kod jest udostępniony na licencji MIT.

Framework został stworzony w celu analizy przyczyn dużego zużycia pamięci podczas pracy z witrynami i aplikacjami internetowymi. Na przykład przy pomocy memlab analizowano zużycie pamięci przy użyciu nowej wersji strony Facebook.com, co pozwoliło wykryć wycieki prowadzące do awaryjnego zamknięcia przeglądarki po stronie klienta z powodu wyczerpania dostępnej pamięci.

Przyczynami wycieków pamięci podczas wykonywania kodu JavaScript mogą być ukryte odniesienia do obiektów, przez które kolektor śmieci nie może zwolnić zajmowanej przez obiekt pamięci, nierozważne buforowanie wartości lub implementacja nieskończonego przewijania bez usuwania starych elementów listy. Na przykład w poniższym kodzie w Chrome wyciek pamięci występuje z powodu obiektu „obj”, mimo że przypisano mu wartość null, ponieważ Chrome zachowuje wewnętrzne odniesienia do wyświetlanych obiektów, aby umożliwić ich późniejsze inspekcje w konsoli internetowej. var obj = {}; console.log(obj); obj = null;

Główne możliwości memlab:

  • Wykrywanie wycieków pamięci w przeglądarce. Memlab automatycznie porównuje zrzuty stanu dynamicznej pamięci, identyfikuje wycieki pamięci i agreguje wyniki.
  • Obiektowo-zorientowane API do przeszukiwania stosu, które umożliwia implementację własnych algorytmów wykrywania wycieków oraz realizację systemów analizy zrzutów stanu stosu. Wspierana jest analiza stosu dla przeglądarek bazujących na silniku Chromium, jak również dla platform Node.js, Electron i Hermes.
  • Interfejs linii poleceń oraz API do poszukiwania możliwości optymalizacji wykorzystania pamięci.
  • System asercji dla Node.js, pozwalający na tworzenie testów jednostkowych oraz wykonywanie programów opartych na Node.js w celu generowania zrzutów własnego stanu, sprawdzania pamięci lub pisania rozszerzonych asercji.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster