윈도우 환경에서 자바 SE 6 에 대한 문제 해결(Troubleshooting) 가이트 팁(Quick Guide)

0

Written on 오전 1:33 by 강여사(J.Y.Kang)

본 문서는 "퀵 스타트 가이드"로 문제 해결(troubleshooting)을 위한 몇 가지 빠른 도움말을 제공합니다. 즉, 정보를 얻기 위해 작업을 수행하거나 하나 이상의 방법을 포함한 문제 해결에 도움이되는 몇 가지 일반적인 기능을 나열합니다.

이러한 요령으로 구성은 다음과 같습니다 : (해당 주제별)

  • 행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스
  • 사후 진단(Post-mortem Diagnostics), 메모리 누수(Leaks)
  • 모니터링
  • 기타 기능

행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스

  • 출력 쓰레드 모든 Java 쓰레드에 대한 스택 :

    • Control-Break
    • jstack pid 명령
  • 교착 상태를 감지 :

    • 교착 상태 감지 요청: JConsole 툴, 쓰레드 탭(tab)
    • 쓰레드 교착 상태에 정보 출력 : Control-Break
    • 프로세스에 대한 잠금 정보 출력 : jstack -l pid 명령
  • 프로세스에 대한 힙 히스토그램(heap histrogram) 가져오기 :

    • 자바 프로세스를 다음 옵션으로 시작 -XX:+PrintClassHistogram, 그후 Control-Break
    • jmap -histo 명령
    • 프로세스에 대한 자바 힙 덤프를 바이너리 형식의 파일에 덤프 뜨기:
    • jmap –dump: format=b,file=filename pid

사후 진단, (Post-mortem Diagnostics), 메모리 누수(Memory Leaks)

  • 치명적인 오류 로그 파일을 검사합니다. 기본 파일 이름은 hs_err_pidpid.log 로 작업 디렉토리에 들어있습니다.
  • 힙 덤프(heap dump) 생성 :

    • HPROF 활성시켜 응용 프로그램 시작: java -agentlib:hprof=file=file,format=b application; 그후 Control-Break파일
    • HPROF 활성시켜 응용 프로그램 시작: java -agentlib:hprof=heap=dump application
    • JConsole 툴에서 MBeans 탭
    • 다음 옵션으로 VM 시작 -XX:+HeapDumpOnOutOfMemoryError;; OutOfMemoryError 가 던져지면, VM은 힙 덤프(heap dump)를 자동 생성합니다.
  • 자바 힙 덤프 보기(Browse) :

    • jhat heap-dump-file
  • 프로세스에 대한 힙 히스토그램 가져오기:

    • 다음 옵션으로 자바 프로세스 시작: -XX:+PrintClassHistogram, 그후 Control-Break
    • jmap -histo pid
  • 모니터링 (jstat 윈도우 98이나 윈도우 ME에서 사용할 수없습니다.)

참고 : jstat 명령에 대한 인수는 가상 머신 vmID 식별자입니다. jstat man 페이지를 참조하십시오

자세한 설명

  • 클래스 로더에 통계 출력 :

    • jstat -class vmID
  • 컴파일러에 대한 통계 출력 :

    • 컴파일러 동작 : jstat -compiler vmID
    • 컴파일 메소드에 대한 통계 : jstat - printcompilation vmID
  • 가비지 컬렉션에 통계 출력 :

    • 요약 통계 : jstat -gcutil vmID
    • 오류 포함, 요약 통계 : jstat - gccause vmID
    • GC의 힙 동작(behavior) : jstat -gc vmID
    • 모든 generations 용량 : jstat -gccapacity vmID
    • new generation 동작: jstat -gcnew vmID
    • new generation 용량: jstat -gcnewcapacity vmID
    • old 와 permanent generations 동작: jstat -gcold vmID
    • old generations 용량 : jstat -gcoldcapacity vmID
    • permanent generations 용량: jstat -gcpermcapacity vmID
  • finalization를 기다리는 개체 모니터링:

    • JConsole 툴, VM 요약 탭
    • java.lang.management.MemoryMXBean 클래스 안에 있는getObjectPendingFinalizationCount 메소드
  • 메모리 모니터 :

    • HPROF를 통해 힙 할당 프로필(profiles) : java -agentlib:hprof=heap=sites
    • JConsole 툴, 메모리 탭
    • Control – Break 는 generation 정보 출력
  • CPU 사용률 모니터 :

    • 쓰레드 스택 관련 : java -agentlib:hprof=cpu=samples application
    • 메소드 관련 : java -agentlib:hprof=cpu=times application
    • JConsole 툴, 개요 및 VM을 요약 탭
  • 쓰레드 활동 모니터 :

    • JConsole 툴, 쓰레드 탭
  • 클래스 액티비티 모니터 :

    • JConsole 툴, 클래스 탭

기타 기능

  • instrumented 자바 가상 머신 인터페이스 :

    • instrumented VMs (Windows 98이나 Windows ME 불가) 생성 및 종료 모니터 : jstatd daemon
    • instrumented VMs (Windows 98이나 Windows ME 불가) 목록 : jps
    • 원격 모니터링 툴 및 로컬 VM 간 인터페이스 제공 (Windows 98 이나 Windows ME 불가) : jstatd daemon
    • 가비지 컬렉션 요청 : JConsole 툴, 메모리 탭
  • 프로세스의 특정 자바 VM 플래그(flags) 값 동적 설정, 해제, 또는 변경 :

    • jinfo -flag flag pid
  • 가상 머신에 Java VM 플래그(flag) 전달하기 :

    • jconsole -Jflag ...
    • jhat -Jflag ...
  • 모니터 경합 보고 :

    • java -agentlib:hprof=monitor=y application
  • 대화식(interactive) 모드 또는 일괄처리(batch) 모드로 스크립트 평가 또는 실행 :

    • jrunscript
  • MBean 동적 인터페이스, JConsole 툴 탭을 통해 MBean :

    • 트리 구조 보기.
    • 속성 값 설정.
    • 작업(operation) 호출.
    • 알림(notification) 설정(subscribe)
  • 대화식 명령 - 라인 디버거 실행 :

    • 클래스에 대한 새 VM이 : jdb class
    • 실행중인 VM에 디버거 첨부 : jdb –attach address

If you enjoyed this post Subscribe to our feed


No Comment

댓글 쓰기