Facebook opublikował kod źródłowy memlab

facebook-memlab

MemLab to framework do wyszukiwania wycieków pamięci JavaScript

Niedawno pojawiły się wiadomości Facebook podjął decyzję o wydaniu kodu źródłowego zestawu narzędzi memlab, który jest przeznaczony do analizy fragmentów stanu pamięci alokowane dynamicznie (sterta), określić strategię optymalizacji pracy z pamięcią i wykrywać wycieki pamięci, które występują, gdy wykonywanie kodu JavaScript. 

Ramka została stworzona w celu analizy przyczyn wysokiego zużycia pamięci podczas pracy ze stronami internetowymi i aplikacjami internetowymi. Na przykład memlab został wykorzystany do analizy zużycia pamięci podczas korzystania z nowej wersji witryny Facebook.com, która ujawniła wycieki, które spowodowały awarię przeglądarki po stronie klienta z powodu wyczerpania wolnej pamięci.

Osoby korzystające z naszych aplikacji internetowych często od razu zauważą problemy z wydajnością i poprawki funkcjonalne. Utrata pamięci to jednak inna historia. Nie jest to od razu zauważalne, ponieważ zużywa jeden kawałek pamięci na raz, wpływając na całą sesję internetową i powodując, że kolejne interakcje są wolniejsze i mniej responsywne.

Aby pomóc naszym programistom w rozwiązaniu tego problemu, stworzyliśmy MemLab , platformę testowania pamięci JavaScript, która automatyzuje wykrywanie wycieków i ułatwia lokalizowanie wycieków pamięci. Wykorzystaliśmy MemLab w Meta, aby skutecznie powstrzymać niezrównoważony wzrost pamięci i zidentyfikować wycieki pamięci oraz możliwości optymalizacji pamięci w naszych produktach i infrastrukturze.

Wysokie użycie pamięci ma statystycznie istotny i negatywny wpływ na ładowanie strony i wydajność interakcji (jak długo trwa wczytanie strony lub wykonanie interakcji)
Wskaźniki zaangażowania użytkowników (aktywni użytkownicy, czas spędzony w witrynie, liczba wykonanych czynności)

Przyczyny wycieków pamięci podczas wykonywania kodu JavaScript może być obecność odniesień do ukrytych obiektów, więc odśmiecacz nie może zwolnić pamięci zajmowane przez obiekt, nieuzasadnione buforowanie wartości lub implementacja nieskończonego przewijania bez eksmisji starych elementów listy.

Na przykład w poniższym kodzie przeglądarki Chrome przeciek pamięci występuje z powodu obiektu „obj”, mimo że ma on wartość null, ponieważ Chrome przechowuje wewnętrzne odwołania do renderowanych obiektów, aby umożliwić ich późniejszą inspekcję w konsoli internetowej.

Podstawowe działanie Memlab, jest następujący:

  1. Najpierw wykrywa wycieki pamięci w przeglądarce, Memlab umożliwia automatyczne porównywanie dynamicznych migawek pamięci, wykrywanie wycieków pamięci i agregowanie wyników.
  2. Zorientowany obiektowo interfejs API przechodzenia sterty, który umożliwia implementację własnych algorytmów wykrywania wycieków i implementację systemów do analizowania migawek sterty. Parsowanie sterty jest obsługiwane w przeglądarkach opartych na silniku Chromium, a także w platformach Node.js, Electron i Hermes.
  3. Interfejs wiersza poleceń i API do znajdowania możliwości optymalizacji wykorzystania pamięci.
  4. System asercji dla Node.js, który umożliwia tworzenie testów jednostkowych i uruchamianie programów opartych na Node.js w celu dzielenia własnego stanu, testowania pamięci lub pisania zaawansowanych asercji.
  5. Grupowanie śladów retencji, MemLab grupuje wszystkie ślady retencji razem i wyświetla ślad dla każdej grupy filtrowanych obiektów, które mają podobne ślady retencji. Śledzenie zawiera również informacje dotyczące debugowania, takie jak węzły dominujące i zachowane rozmiary.
  6. Zgłaszając wycieki, MemLab może być uruchamiany w regularnych odstępach czasu w ciągu dnia, aby uzyskać ciągły sygnał o regresji pamięci. Wszelkie nowe regresje są dodawane do wewnętrznego pulpitu nawigacyjnego, na którym zbierane i klasyfikowane są zbiorcze ślady przechowywania wszystkich wykrytych wycieków pamięci. Deweloperzy mogą następnie kliknąć i wyświetlić właściwości obiektu w śledzeniu wstrzymania dla każdego wycieku pamięci.

W końcu Jeśli jesteś zainteresowany, powinieneś wiedzieć, że kod Memlab jest open source na licencji MIT i możesz dowiedzieć się o nim więcej W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.