Written on 오후 7:47 by 강여사(J.Y.Kang)
본 문서는 "퀵 스타트 가이드"로 문제 해결(troubleshooting)을 위한 몇 가지 빠른 도움말을 제공합니다. 즉, 정보를 얻기 위해 작업을 수행하거나 하나 이상의 방법을 포함한 문제 해결에 도움이되는 몇 가지 일반적인 기능을 나열합니다.
이러한 요령으로 구성은 다음과 같습니다 : (해당 주제별)
- 행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스
- 사후 진단(Post-mortem Diagnostics), 메모리 누수(Leaks)
- 모니터링
- 원격 디버그 서버 상의 액션(Actions)
- 기타 기능
행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스
출력 쓰레드 모든 Java 쓰레드에 대한 스택 :
- Control-\
- kill-QUIT pid
- jstack pid (또는 jstack -F pid , 만약 jstack pid가 응답하지 않으면)
교착 상태를 감지 :
- 교착 상태 감지 요청: JConsole 툴, 쓰레드 탭(tab)
- 쓰레드 교착 상태에 정보 출력 : Control-\
- 각각의 쓰레드가 소유한 동시 잠금 목록 출력: -XX:+PrintConcurrentLocks 세트, 그 후 Control-\
- 프로세스에 대한 잠금 정보 출력 : jstack -l pid 명령
프로세스에 대한 힙 히스토그램(heap histrogram) 가져오기 :
- 자바 프로세스를 다음 옵션으로 시작 -XX:+PrintClassHistogram, 그 후 Control-\
- jmap -histo 명령 (만약 pid 응답이 없으면 -F 옵션 추가)
프로세스에 대한 자바 힙 덤프를 바이너리 형식의 파일에 덤프 뜨기:
- jmap –dump: format=b,file=filename pid (만약 pid 응답이 없으면 -F 옵션 추가)
프로세스를 위한 공유된 객체 매핑 출력
프로세스를 위한 힙 요약정보 출력
프로세스를 위한 종료자(finalization) 정보 출력
프로세스에 명령어 디버거 붙이기(attach)
- jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=pid jmap -histo 명령
사후 진단, (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) :
프로세스에 대한 힙 히스토그램 가져오기:
- 다음 옵션으로 자바 프로세스 시작: -XX:+PrintClassHistogram, 그후 Control-Break
- jmap -histo pid (만약 pid 응답이 없으면 -F 옵션 추가)
코어 파일로부터 힙 히스토그램 가져오기:
코어 파일로부터 공유된 객체 매핑 출력:
코어 파일로부터 힙 요약정보 출력:
코어 파일로부터 종료자(finalization) 정보 출력:
- jmap -finalizerinfo corefile
코어 파일로부터 자바 설정 정보 출력:
코어 파일로부터 쓰레드 추적 출력:
코어 파일로부터 잠금 정보 출력:
같은 머신 상에서 코어 파일에 명령어 디버거 붙이기(attach):
- jdb -connect sun.jvm.hotspot.jdi.SACoreAttachingConnector:javaExecutable=path,core=corefile
서로 다른 머신상에서 코어 파일에 명령어 디버거 붙이기(attach):
- 코어 파일을 가진 쪽: jsadebugd path corefile
- 디버거를 가진 쪽: jdb -connect sun.jvm.hotspot.jdi.SADebugServerAttachingConnector:debugServerName=machine
- libumem 은 메모리 누수를 디버그하기 위해 사용될 수 있다.
모니터링 (jstat 윈도우 98이나 윈도우 ME에서 사용할 수 없습니다.)
참고 : jstat 명령에 대한 인수는 가상 머신 vmID 식별자입니다. jstat man 페이지를 참조하십시오
자세한 설명
원격 디버그 서버 위의 액션(actions)
기타 기능
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) 값 동적 설정, 해제, 또는 변경 :
가상 머신에 Java VM 플래그(flag) 전달하기 :
- jconsole -Jflag ...
- jhat -Jflag ...
- jmap -Jflag ...
클래스 로더에 의한, 자바 힙의 영속 제너레이션 통계 출력
모니터 경합 보고 :
- java -agentlib:hprof=monitor=y application
대화식(interactive) 모드 또는 일괄처리(batch) 모드로 스크립트 평가 또는 실행 :
MBean 동적 인터페이스, JConsole 툴 탭을 통해 MBean :
- 트리 구조 보기.
- 속성 값 설정.
- 작업(operation) 호출.
- 알림(notification) 설정(subscribe)
대화식 명령 - 라인 디버거 실행 :
- 클래스에 대한 새 VM이 : jdb class
- 실행중인 VM에 디버거 첨부 : jdb –attach address
If you enjoyed this post
Subscribe to our feed