2012-08-28 6 views
1

Netbeans에서 프로파일 링을 사용하여 서버 응용 프로그램을 최적화하고 기본 이름 (예 : pool-25-thread-1)을 가진 일부 와일드 스레 드는 새로운 사용자가 로그인 할 때마다 40 개를 생성하고 절대로 종료되지 않습니다. 스레드 풀에서 시작한 스레드를 추적하고 있지만 스레드는 제 3 자 클래스에서 비롯된 것으로 보입니다.풀에서 스레드의 원점을 추적하는 방법은 무엇입니까?

해당 타사 코드를 피하거나 개선하기 위해 이러한 스레드의 소스 (해당 클래스를 시작한 소스)를 추적하고 찾을 수있는 방법을 찾아야합니다.

감사합니다.

+4

http://stackoverflow.com/questions/9874641/tracking-java-thread-creation-and-lifetime – Sajith

+0

@Sajith 시작시 에이전트가 다운되었으므로 클래스 로더에서 클래스를 추적 할 수없는 것 같습니다. – Shisoft

답변

4

디버거를 연결하고 Thread.start()에 중단 점을 넣을 수 있습니다.

+0

질문은 스레드가 어디서 왔는지 모릅니다. – Shisoft

+0

Thread.start() 메소드를 깰 때 현재 스택을 검사 할 수 있어야하고 스레드가 들어오는 _see_을 검사 할 수 있어야합니다. – jtahlborn

+0

문제는 컴파일 된 코드에서 발생합니다. 어느 코드인지 모릅니다. – Shisoft

0

스택 추적을보고 스레드의 진입 점을 식별 할 수 있으며 일반적으로 어떤 라이브러리가 스택 추적을 담당했는지 알기 쉽습니다.

+0

VisualVM을 사용하고 시도했습니다. 덤프 스레드. 그러나 스택 추적은 쓰레드가 쓰레드 풀 형태가된다는 것을 알려주지 만 풀이 어디서 왔는지는 여전히 알 수 없습니다. – Shisoft

관련 문제