Za pomocą narzędzia do profilowania alokacji znajdź obiekty, które nie są prawidłowo zbierane podczas czyszczenia pamięci, i nadal zachowuj pamięć.
Jak działa to narzędzie
Program do profilowania alokacji łączy szczegółowe informacje o migawce programu profilującego sterty z przyrostowym aktualizowaniem i śledzeniem panelu osi czasu. Podobnie jak w przypadku tych narzędzi przydzielanie sterty obiektów śledzenia obejmuje rozpoczęcie nagrywania, wykonanie sekwencji działań, a następnie zatrzymanie rejestrowania na potrzeby analizy.
Narzędzie okresowo wykonuje zrzuty sterty w trakcie nagrywania (równie co 50 ms!) i tworzy 1 ostateczną migawkę po zakończeniu nagrywania.
Włącz profilowanie alokacji
Aby rozpocząć korzystanie z programu profilu alokacji:
- Upewnij się, że masz najnowszą wersję Chrome Canary.
- Otwórz Narzędzia dla programistów i kliknij ikonę koła zębatego w prawym dolnym rogu.
- Teraz otwórz panel programu profilującego. Powinien się tam pojawić profil o nazwie „Zarejestruj przydziały sterty”.
Odczytywanie profilu alokacji sterty
Profil alokacji sterty pokazuje, gdzie są tworzone obiekty, i określa ścieżkę przechowywania. Na poniższym zrzucie ekranu słupki u góry wskazują, kiedy na stercie znajdują się nowe obiekty.
Wysokość każdego słupka odpowiada rozmiarowi ostatnio przydzielonych obiektów, a kolor słupków wskazuje, czy obiekty te są nadal aktywne w ostatecznej kopii sterty. Niebieskie paski wskazują obiekty, które na końcu osi czasu są nadal aktywne, a szare paski – obiekty, które zostały przydzielone w czasie osi czasu, ale od tego czasu są zbierane:
Na poniższym zrzucie ekranu działanie zostało wykonane 10 razy. Przykładowy program zapisuje w pamięci podręcznej 5 obiektów, dlatego powinno wyświetlić się ostatnich 5 niebieskich słupków. Niebieski pasek po lewej stronie oznacza jednak potencjalny problem.
Następnie możesz użyć suwaków na osi czasu powyżej, aby powiększyć dany zrzut i wyświetlić obiekty, które zostały ostatnio przydzielone w tym punkcie:
Kliknięcie konkretnego obiektu na stercie spowoduje wyświetlenie jego drzewa przechowywania w dolnej części zrzutu stosu. Zbadanie ścieżki przechowywania obiektu powinno dostarczyć informacji potrzebnych do zrozumienia, dlaczego obiekt nie został zebrany. Możesz też wprowadzić niezbędne zmiany w kodzie, aby usunąć zbędne odwołanie.
Wyświetl alokację pamięci według funkcji
Możesz też wyświetlić alokację pamięci według funkcji JavaScript. Więcej informacji znajdziesz w artykule Badanie alokacji pamięci według funkcji.