2013-01-15 13 views
5

Próbuję debugować błąd permgen w aplikacji. Używam VisualVM, aby profilować aplikację i wziąłem stertę z pamięci migawki.VisualVM - Znajdź wszystkie odniesienia do klasy

Ładowanie migawki do VisualVM do analizy, aktualnie mogę zobaczyć na liście klas kilka klas pojawiających się kilka razy, wszystkie wymienione z 0 instancjami, 0 rozmiarami - Oczekuję tylko jednej z tych klas każda (prawdopodobnie powiązana z jej klasą ładującą klasy) - Czy istnieje sposób na określenie, co nadal zawiera odniesienia do tych klas bez żadnych instancji? Z przyjemnością używam innego narzędzia, jeśli mogę po prostu załadować zrzut (.hprof), aby przeanalizować, co trzyma referencję.

Dzięki!

+0

Użyłem YourKit do tego w przeszłości. Może załadować zrzut. Możesz uzyskać bezpłatną licencję eval. –

Odpowiedz

3

Używam MAT do takich rzeczy. Działa świetnie, nawet na dużych hałdach.

+0

Dzięki - po prostu natknąłem się na inną rekomendację dla MAT również - zainstalowałem w Eclipse, więc załaduję logi, aby zobaczyć, co mogę znaleźć. – rhinds

16

Cóż, powiedzenie "use MAT" tak naprawdę nie odpowiada na pytanie!

Aby to zrobić w VisualVM, w widoku Sampler lub Profiler znajduje się przycisk (w prawym górnym rogu) oznaczony "Heap Dump". Kliknij to, co spowoduje otwarcie analizatora sterty. W zakładce "Klasy" pokazane są wszystkie załadowane klasy. Na dole znajduje się pole wyszukiwania, wpisz nazwę klasy, którą jesteś zainteresowany, w widoku filtrowanym kliknij dwukrotnie klasę, o której mowa.

Spowoduje to otwarcie widoku instancji. Kliknij prawym przyciskiem myszy instancję w lewym panelu i wybierz opcję "Pokaż najbliższy główny katalog główny", aby znaleźć odwołanie do obiektu.

Barney

Powiązane problemy