2015-10-14 13 views
8

Czy istnieje sposób, aby dowiedzieć się, jaki rodzaj obiektów zbiera się najczęściej w aplikacji JavaScript?JS: Profil Jakie obiekty Konstruktorzy są zbierane śmieci

Wiem, że mogę uzyskać migawkę sterty, ale to tylko mówi, jakie obiekty są najbardziej powszechne, a nie najbardziej zebrane.

Alokacje sterty nie podają szczegółowych informacji o klasie obiektów.

+0

w dużej mierze zależy od środowiska, w którym działa JS. Na przykład. jeśli wykonujesz pracę na nashorn, możesz po prostu użyć profilera JVM. – the8472

+0

Czy znalazłeś rozwiązanie tego problemu? – Jodes

+1

@Jodes Zobacz http://stackoverflow.com/questions/39429647/how-to-detect-the-memory-allocations-that-are-triggering-garbage-collection-in-j/ – guest271314

Odpowiedz

1

Używanie wybranego aparatu wykonawczego JavaScript? Każdy silnik będzie posiadał własny GC i własny sposób monitorowania zdarzeń GC. Silnik Chrome V8 byłby dobrym miejscem do rozpoczęcia, jeśli próbujesz dowiedzieć się więcej o jednej implementacji GC: https://developers.google.com/v8/ Jeśli pobierzesz źródło z github https://chromium.googlesource.com/v8/v8.git znajdziesz pliki src/heap/gc-tracer. [H | cc] zapewniają wiele możliwości i możesz dodać więcej do własnych potrzeb profilowania.

+0

Daniel, to nie odpowiada na pytanie. Wdrożenie silnika GC nie jest problemem. Potrzebny jest sposób sprawdzenia, które obiekty javascript gromadzi GC. – Jodes

+0

Sprawdź kod źródłowy. Jeśli używa Chrome V8, może uzyskać te informacje. –

+0

Przepraszam, nie śledzę. Jak można by użyć kodu V8 do przyspieszenia javascript? Modyfikując go i budując niestandardowy interpreter javascript języka C++, aby uzyskać informacje o debugowaniu? – Jodes

1

Domyślam się, że można to zrobić, wykonując wiele migawek sterty, a następnie porównując migawki, aby zidentyfikować, które obiekty są zbierane. Możesz odpowiedzieć na odpowiedź this. Mam nadzieję, że to pomoże :)

Powiązane problemy