Jak korzystać z narzędzia do profilowania alokacji

Meggin Kearney
Meggin Kearney

Za pomocą narzędzia do profilowania alokacji możesz znaleźć obiekty, które nie są prawidłowo usuwane, i nadal zachowywać pamięć.

Jak działa to narzędzie

Program profilujący alokacji łączy szczegółowe informacje o zrzutach z narzędzia do profilowania sterty z aktualizacją przyrostową i śledzeniem z panelu Oś czasu. Podobnie jak w przypadku tych narzędzi alokacja sterty obiektów śledzących obejmuje rozpoczęcie nagrywania, wykonanie sekwencji działań, a następnie zatrzymanie nagrywania do analizy.

Narzędzie co jakiś czas robi zrzuty stosu w trakcie całego nagrania (często co 50 ms) oraz robi końcową migawkę na końcu nagrania.

Program profilujący alokacji

Włącz profilowanie alokacji

Aby zacząć korzystać z narzędzia do profilowania alokacji:

  1. Upewnij się, że masz najnowszą wersję Chrome Canary.
  2. Otwórz Narzędzia dla programistów i kliknij ikonę koła zębatego w prawym dolnym rogu.
  3. Teraz otwórz panel programu profilującego. Powinien wyświetlić się profil o nazwie „Record Heap Allocations” (Rejestruj przydziały sterty).

Rejestruj profilowanie alokacji sterty

Odczytywanie profilu alokacji sterty

Profil alokacji sterty pokazuje, gdzie są tworzone obiekty, i wskazuje ścieżkę zachowywania. Na poniższym zrzucie ekranu paski u góry wskazują, kiedy na stercie znajdują się nowe obiekty.

Wysokość każdego słupka odpowiada rozmiarowi ostatnio przydzielonych obiektów, a kolory słupków wskazują, czy obiekty te są wciąż aktywne na końcowym zrzucie stosu. Niebieskie paski wskazują obiekty, które na końcu osi czasu są wciąż aktywne, a szare wskazują obiekty, które zostały przydzielone na osi czasu, ale zostały już usunięte z pamięci:

Zrzut programu profilującego alokacji

Na zrzucie poniżej działanie zostało wykonane 10 razy. Przykładowy program zapisuje w pamięci podręcznej 5 obiektów, więc ostatnich 5 pasków powinna się pojawić w pamięci podręcznej. Niebieski pasek po lewej stronie wskazuje jednak na możliwy problem.

Następnie możesz za pomocą suwaków na osi czasu powyżej powiększyć dany zrzut i zobaczyć obiekty, które zostały do niego ostatnio przydzielone:

Powiększ zrzut

Kliknięcie konkretnego obiektu na stercie spowoduje wyświetlenie jego drzewa przechowywania w dolnej części zrzutu stosu. Badanie ścieżki przechowywania do obiektu powinno dostarczyć wystarczającą ilość informacji, by zrozumieć, dlaczego obiekt nie został zebrany. Możesz też wprowadzić niezbędne zmiany w kodzie, by usunąć niepotrzebne odwołanie.

Wyświetl przydział pamięci według funkcji

Możesz też wyświetlić przydział pamięci według funkcji JavaScriptu. Więcej informacji znajdziesz w artykule Analizowanie przydziału pamięci według funkcji.