2014-06-25 12 views
7

Próbowałem zoptymalizować stronę kanciastą, a uzyskanie dużej liczby opóźnień w odpowiedzi na moją stronę podczas przełączania między niektórymi trasami . Każda wyświetlana strona nie jest masywna, ale ma sporą liczbę elementów i rozsądną liczbę powiązań. Już zrobiłem, co mogę z bindonce, więc poszedłem i zajrzałem do debuggera z Chrome i widzę, że większość mojego czasu wydaje się być spędzonym na robieniu GC.Jak debugować, co wydaje się być długimi przerwami między zdarzeniami GC w Chrome Javascript

Co jest dziwne, wydaje się, że pomiędzy poszczególnymi GC występują ogromne luki i próbuję dowiedzieć się, co to dokładnie jest.

Zgaduję, że to jest, kiedy faktycznie usuwa elementy, a małe paski są wtedy, gdy robi się znak i zamiatanie, ale nie jestem tak zaznajomiony z tym poziomem głębokości analizowania JS. Większość mojej pracy była w C++/C#/Java.

Chrome debug output

+0

Czy można uruchomić inny profil i obejrzeć liczbę węzłów DOM? Zastanawiam się, czy w twoim kodzie zachodzi przypadkowa rekursja, która wymaga okresowego GC. –

Odpowiedz

4

w pół sekundy więcej niż 20 MB śmieci zebrano. GC jest dość zajęty. Oznacza to również, że twoje oprogramowanie jest również dość zajęte, co powoduje, że przynajmniej niektóre wykorzystanie pamięci przez niektóre obiekty. Aby lepiej zrozumieć, skąd pochodzą śmieci, profilowanie alokacji sterty może okazać się przydatne w tym momencie. W obszarze Profile można uzyskać migawki przydzielania sterty i sprawdzić, jaki typ obiektów został utworzony, które obiekty pochłonęły najwięcej pamięci itp.

Powiązane problemy