2012-05-25 6 views

Odpowiedz

27

Spróbuj z jstack. Da ci pełną listę tego, co robią twoje wątki. Wszystko, czego potrzebuje, to pid procesowy.

+0

Nie jestem pewien, czy to pomaga w moim przypadku, ale ma odpowiedzieć na pytanie http: // pastebin.com/r1e0dtzp – sorin

+0

To zawęża to do pewnego stopnia. Jeśli masz 100% użycia procesora, chcesz szukać wątków, które nie są w stanie BLOCKING. Na przykład wątek 30609 to sun.nio.ch.EPollArrayWrapper.epollWait, który może potencjalnie dopasować [tę wadę] (https://issues.apache.org/jira/browse/DIRMINA-678) w zależności od konfiguracji. – mprivat

+0

Ostatnio jstack przestał działać i nie jestem pewien dlaczego. Oto powiązane pytanie http://stackoverflow.com/questions/31179544/did-the-jstack-stopped-working-on-newer-jdk8-versions – sorin

2

Spójrz na VisualVM. Jest w nim wiele fajnych narzędzi do profilowania i możesz wykonać zrzut wątku.

8

Wykonaj zrzut wątku. Połącz się za pomocą Visual VM i poproś o zrzut. Lub jeśli na systemie Unix to kill -3 pid lub w systemie Windows Ctrl + Break na konsoli procesu zrobi to za Ciebie. Zrzut idzie prosto do konsoli. Możesz również użyć jstack, aby rzucić zrzut.

+0

kill -3 pid działa świetnie, dzięki! Dla tych, dla których maszyna JVM działa na "ekranie": ctrl-a H (wielkie litery) uruchamia/zatrzymuje rejestrowanie do pliku. – schieferstapel

3

W * nix, z top przez naciśnięcie klawisza H możesz zobaczyć wątki.

Możesz zobaczyć , pamiętasz, że jeśli proces został uruchomiony z uprawnieniami, musisz go uruchomić na przykład pod numerem sudo.

Jeśli wybierzesz identyfikator wątku i skonwertujesz go na wartość szesnastkową, możesz przekroczyć te dane, używając wyjścia jstack pid.

Oba narzędzia są w wersji $JAVA_HOME/bin.

4

Ctrl+\ na linux (który wysyła SIGQUIT)

Ctrl+Break na oknach (które wysyła SIGBREAK pod MSVCRT)