문제

는지 궁금하네요 가능한 경우에 핸들을 실행하는 인스턴스의 특정 클래스입니다.특정 문제를 트리거이었는 응용 프로그램을 종료되지 않을 잘하기 때문에 다수의 실행 스레드입니다.

그렇다,나는 당신을 데몬으로 실행할 수 있습니 theads,그리고 그들은 다음 응용 프로그램을 종료합니다.하지만 그것이 나를 얻었을지 궁금하다면 이것이 가능합니다.가장 가까운 것은 내가 할 수 있는 classloaders(보호됩니다!) findLoadedClass, 는 있지만을 실행해 자신의 클래스 로더십니다.

에 관련 참고,이것이 얼마나 프로파일링 도구는 관리를 개체 추적 처리?를 통해 실행하여 그들의 사용자 정의 classloaders?또는 거기에 몇 가지 좋은 까다로운 방법을 보지 못하고?

도움이 되었습니까?

해결책

할 수 있는 실제로 스택 추적을 가져오의 모든 스레드를 실행하는 중에 버려진하는 표준을 사용하여 kill -QUIT <pid> 에서 기존 유닉스용과 같은 OS,또는 실행하여 응용 프로그램에는 Windows 콘솔하고 누르 Ctrl-Pause (으로 또 다른 포스터 메모입니다.)

그러나,그것은 당신 같은 요청에 대한 프로그래밍 방법으로 그것을 할 수 있습니다.그래서 가정하면,당신이 정말로 원하는 설정의 모든 쓰레드들의 현재 호출 스택 중 하나 이상을 포함 방법에서 지정된 클래스...

가장 좋은 것을 찾을 수 있습는 포함하지 않는 전화로 JVMTI 은 검사의 스택을 모두 실행 스레드입니다.내가 시도하지 않은 이지만 작동해야에서 Java1.5 이상이 됩니다.유지 하는 마음에 이것은,정의에 의하여,모든 thread-safe(목록의 실행 스레드-그리고 그들의 현재 스택 추적-는 것을 끊임없이 변경 아래에 당신은 웨스트 파크 자연 보호구의 편집증 물건을 필요한 것이 실제로 사용의 목록입니다.)

public Set<Thread> findThreadsRunningClass(Class classToFindRunning) {

  Set<Thread> runningThreads = new HashSet<Thread>();
  String className = classToFindRunning.getName();

  Map<Thread,StackTraceElement[]> stackTraces = Thread.getAllStackTraces();
  for(Thread t : stackTraces.keySey()) {
    StackTraceElement[] steArray = stackTraces.get(t);
    for(int i = 0;i<steArray.size();i++) {
      StackTraceElement ste = steArray[i];
      if(ste.getClassName().equals(className)) {
        runningThreads.add(t);
        continue;
      }
    }
  }

  return runningThreads;
}

알려주는 경우는 이 방법이 당신을 위해 밖으로 작동하!

다른 팁

이 페이지,

Java 프로파일러를 사용하는 네이티브 인터페이스를 JVM(이 JVMPI Java <=1.4.2 나 JVMTI Java>=1.5.0 자)를 프로파일링 정보에서 실행하는 옵션을 선택해야 합니다.

이것은 몇몇 태양 공급 원시 코드 제공하는 프로파일러 후크로 JVM.

만 필요한 경우 빠른 스택 추적의 실행 중인 응용 프로그램을 찾는 스레드가 차단 JVM 종료를 보낼 수 있습니다 그것은 종료 신호입니다.

$ kill -QUIT <pid of java process>

Windows 에서 당신은 필요한 응용 프로그램을 실행하는 콘솔에서 창(사용 java.exe, 지 javaw.exe다),당신은 수려면 Ctrl-일시 정지를 생성하는 스택 덤프.두 경우 모두 기록하 stdout.

내가 사용하는 Visual VM 하 모니터링 JVM.는 기능을 많이,그것을 시도를 제공합니다.

나는 당신이 필요하다고 생각 a Java thread dump.이 목록에 모든 쓰레드와 함께 그들이 무엇을 하고 있습니다.나는 유사한 문제가 자신이 스레드를 덤프를 해결하는 데 큰 도움이 되었(석영 스케줄러 스레드는 종료되지 않았습 때 Tomcat 완료).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top