나는 멀티 쓰레드 프로그램으로 몇 가지 작업을 수행한다. JConsole에서 2 개의 비 데몬 쓰레드가 여전히 있음을 알았지 만 정확히 (총 쓰레드 수가 30을 넘는다) 것을 알 수는 없습니다. Visual VM은 이러한 정보를 제공하지 않습니다.자바 스레드 모니터링. 데몬 라이브가 아닌 스레드를 찾는 방법은?
12
A
답변
20
실행 :
$ jstack PID | grep tid= | grep -v daemon
이 스레드 이름을 가진 모든 주어진 자바 PID의 스레드, 필터 라인을 덤프 및 비 데몬 사람을 필터링합니다.
제거 -v
데몬 스레드 만 인쇄합니다.
2
VisualVM에서 스레드 덤프를 가져옵니다. 데몬 스레드는 스레드 이름 옆에 'daemon
'이라는 단어가 있습니다.
"Default RequestProcessor" daemon prio=1 tid=101e58000 nid=0x124d86000 runnable [124d85000]
+0
에서 찾을 수 있습니다. Linux의 경우에는 visualvm 1.33에서이 것을 보지 마십시오. 어떤 창을 참조합니까? –
불행히도 GC 스레드와 같이 불행히도 몇 가지 이상한 스레드가 남았습니다. :) – rogerdpack
향후 독자를위한 팁 : jstack은 JDK의 bin 폴더 –