2009-06-04 16 views
34

Jeśli proces się zawiesi i pozostawi zrzut core lub utworzę go z gcore, to jak mogę go przeanalizować?Jak analizować informacje z podstawowego zrzutu Java?

Chciałbym móc używać jmap, jstack, jstat itd., A także wyświetlić wartości wszystkich zmiennych.

W ten sposób mogę znaleźć przyczyny awarii lub zamrożenia maszyny JVM.

+0

Co to jest zrzut główny Java? Czy odwołujesz się do śledzenia stosu aplikacji lub czy awarie JVM skutkują zrzutem pamięci? –

+1

Czy możemy zamienić to na wiki? To nie jest pytanie programistyczne. Jest to jednak bardzo istotne dla każdego programisty java na platformie unix. Przejście na softwarerecs ... to kolejny wybór. W żadnym wypadku nie usuwaj tego .. – Jayan

Odpowiedz

0

IBM dostarcza wiele narzędzi, które mogą być używane również na jvm słońca. Spójrz na niektóre z projektów na alphaworks, zapewniają one sterty i nici zrzutu analizatorów

Karl

0

polecam spróbować Netbeans Profiler .To ma bogaty zestaw narzędzi do analizy w czasie rzeczywistym. Narzędzia z IbM są warte spróbowania do analizy offline

5

Czy jesteś pewien, że zrzut rdzenia jest tym, czego chcesz? To będzie zawierać surowe odwzorowania działającej maszyny JVM, a nie informacje na poziomie java. Być może zrzut sterty JVM jest tym, czego potrzebujesz.

35

Ok, jeśli stworzyłeś zrzut główny za pomocą gcore lub gdb, musisz przekonwertować go na plik o nazwie HPROF. Mogą one być używane przez VisualVM, Netbeans lub Eclipse's Memory Analyzer Tool (dawniej SAP Memory Analyzer). Polecam Eclipse MAT.

Aby przekonwertować plik, użyj narzędzia wiersza poleceń: jmap.

# jmap -dump:format=b,file=dump.hprof /usr/bin/java core.1234 

gdzie:

dump.hprof to nazwa pliku hprof chcesz utworzyć

/usr/bin/java jest ścieżką do wersji binarnej Java wygenerował rdzeń zrzutowy

core.1234 to zwykły plik core.

+0

Czy możemy przekonwertować plik zrzutu jądra 1.4 jdk, produkowany przy użyciu gcore do hprof na solarisie przy użyciu jdk1.5/bin/jmap? Próbowałem użyć powyższego polecenia, ale daje błąd: Błąd przy dołączaniu do pliku core: nie można znaleźć flagi 'UseSharedSpaces' – techzen

+0

techzen: Nie jestem pewien na tym, obawiam się ... Czy na pewno odwołujesz się do pliku wykonywalnego 1.4 java na wiersz poleceń? Jeśli tak, to może być tak, że zrzuty z 1.4 jądra nie są kompatybilne. – chillitom

+0

Czy można użyć jmap do przekonwertowania pliku mdmp wygenerowanego przez JVM w razie awarii (http://docs.oracle.com/cd/E15289_01/doc.40/e15059/crash.htm)? – Greenhand

2

W rzeczywistości VisualVM może przetwarzać zrzut rdzenia aplikacji.

Po prostu wywołaj "File/Add VM Coredump" i doda nową aplikację do eksploratora aplikacji. Następnie można wykonać zrzut zwoju lub zrzut sterty tej maszyny JVM.

+0

Plik dodać VM Coredump jest wyszarzałem dla mnie. Nie wiem, dlaczego dokładnie – visch

+0

Jeśli jesteś w systemie Windows, nie jest on obsługiwany i niestety będzie wyszarzony. Jestem w tej samej łodzi. http://visualvm.java.net/coredumps.html Węzeł Core Dump jest widoczny w oknie aplikacji, jeśli VisualVM działa w systemie Solaris lub Linux. –

6

Jeśli używasz IBM JVM, download IBM wątku i Monitor Analyzer Dump. To doskonałe narzędzie. Zapewnia szczegóły gwintów i może wskazywać na zakleszczenia, itp. Poniższy blog post zapewnia ładny przegląd, jak z niego korzystać.

Powiązane problemy