우선 간단히 확인하면 아래처럼 나온다. jstat -옵션 -pid -시간 하면 된다.
ex) ~]jstat -gc 16543 1000

저건 pid 16543(java)를 1초에 한번씩 결과값을 보여달란거다.

pid는 ps -efw | grep java로 알아내면 된다.

~] jstat --help

 invalid argument count
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

Definitions:
  <option>      An option reported by the -options option
  <vmid>        Virtual Machine Identifier. A vmid takes the following form:
                     <lvmid>[@<hostname>[:<port>]]
                Where <lvmid> is the local vm identifier for the target
                Java virtual machine, typically a process id; <hostname> is
                the name of the host running the target Java virtual machine;
                and <port> is the port number for the rmiregistry on the
                target host. See the jvmstat documentation for a more complete
                description of the Virtual Machine Identifier.
  <lines>       Number of samples between header lines.
  <interval>    Sampling interval. The following forms are allowed:
                    <n>["ms"|"s"]
                Where <n> is an integer and the suffix specifies the units as
                milliseconds("ms") or seconds("s"). The default units are "ms".
  <count>       Number of samples to take before terminating.
  -J<flag>      Pass <flag> directly to the runtime system.



옵션은 다음과 같다.

 옵션명 내용 
 class  클래스 로더의 동작에 관한 통계 데이터
 compiler  HotSpot Just-in-Time 컴파일러의 동작에 관한 통계 데이터
 gc  가베지 컬렉트된 heap의 동작에 관한 통계 데이터
 gccapactiy  세대마다의 용량과 대응하는 영역에 관한 통계 데이터
 gccause  가베지 콜렉션 통계 데이터의 개요 (-gcutil 와 같다)와 직전 및 현재 (적용 가능한 경우)의 가베지 콜렉션 이벤트의 원인
 gcnew  New 세대의 동작에 관한 통계 데이터
 gcnewcapacity  New 세대의 사이즈와 대응하는 영역에 관한 통계 데이터
 gcold  Old 세대 및 Permanent 세대의 동작에 관한 통계 데이터
 gcoldcapacity  Old 세대의 사이즈에 관한 통계 데이터
 gcpermcapacity  Permanent 세대의 사이즈에 관한 통계 데이터
 gcutil  가베지 콜렉션 통계 데이터의 개요
 printcompilation HotSpot 컴파일 방법의 통계 데이터

각 옵션에 대한 컬럼에 대한 설명은 다음과 같다.

-class  클래스 로더의 통계 데이터
 Loaded  Bytes  Unloaded  Bytes  Time
 로드 된 클래스의 수  로드 된 K 바이트수  언로드된 클래스의 수  언로드된 K 바이트수  클래스의 로드나 언로드 처리에 필요로 한 시간

-compiler HotSpot Just-In-Time 컴파일러의 통계 데이터
 Compiled  Failed  Invalid  Time  FailedType  FailedMethod
 실행된 컴파일 태스크의 수  실패한 컴파일 태스크의 수  무효로 된 컴파일 태스크의 수  컴파일 태스크의 실행에 필요로 한 시간  마지막에 실패한 컴파일의 컴파일 타입  마지막에 실패한 컴파일의 클래스명과 메소드

-gc 가비지 컬렉트된 heap의 통계 데이터
 컬럼명  설명
 S0C  Survivor 영역 0 의 현재의 용량 (KB)
 S1C  Survivor 영역 1 의 현재의 용량 (KB)
 S0U  Survivor 영역 0 의 사용율 (KB)
 S1U  Survivor 영역 1 의 사용율 (KB)
 EC  Eden 영역의 현재의 용량 (KB)
 EU  Eden 영역의 사용율 (KB)
 OC  Old 영역의 현재의 용량 (KB)
 OU  Old 영역의 사용율 (KB)
 PC  Permanent 영역의 현재의 용량 (KB)
 PU  Permanent 영역의 사용율 (KB)
 YGC  Young 세대의 GC 이벤트수
 YGCT  Young 세대의 가베지 콜렉션 시간
 FGC  풀 GC 이벤트수
 FGCT  풀 가베지 콜렉션 시간
 GCT  가베지 콜렉션의 합계 시간

-gccapacity 메모리프르 세대 및 영역 용량

 컬럼명 설명 
 NGCMN  New 세대의 최소 용량 (KB)
 NGCMX  New 세대의 최대 용량 (KB)
 S0C  Survivor 영역 0 의 현재의 용량 (KB)
 S1C  Survivor 영역 1 의 현재의 용량 (KB)
 EC  Eden 영역의 현재의 용량 (KB)
 OGCMN  Old 세대의 최소 용량 (KB)
 OGCMX  Old 세대의 최대 용량 (KB)
 OGC  Old 세대의 현재의 용량 (KB)
 OC  Old 영역의 현재의 용량 (KB)
 PGCMN  Permanent 세대의 최소 용량 (KB)
 PGCMX  Permanent 세대의 최대 용량 (KB)
 PGC  Permanent 세대의 현재의 용량 (KB)
 PC  Permanent 영역의 현재의 용량 (KB)
 YGC  Young 세대의 GC 이벤트수
 FGC  풀 GC 이벤트수
 NGC  New 세대의 현재의 용량 (KB)

-gcutil 가베지 콜렉션 통계 데이터의 개요
 컬럼명  설명
 S0  Survivor 영역 0 의 사용율 (현재의 용량에 대한 퍼센티지)
 S1  Survivor 영역 1 의 사용율 (현재의 용량에 대한 퍼센티지)
 E  Eden 영역의 사용율 (현재의 용량에 대한 퍼센티지)
 O  Old 영역의 사용율 (현재의 용량에 대한 퍼센티지)
 P  Permanent 영역의 사용율 (현재의 용량에 대한 퍼센티지)
 YGC  Young 세대의 GC 이벤트수
 YGCT  Young 세대의 가베지 콜렉션 시간
 FGC  풀 GC 이벤트수
 FGCT  풀 가베지 콜렉션 시간
 GCT  가베지 콜렉션총시간

-gccause GC 이벤트를 포함한 가베지 콜렉션 통계 데이터(gcutil에 두개 컬럼이 추가됨)
 컬럼명  설명
 LGCC  마지막 가베지 콜렉션의 원인
 GCC  현재의 가베지 콜렉션의 원인

-gcnew New 세대의 통계 데이터
 컬럼명  설명
 S0C  Survivor 영역 0 의 현재의 용량 (KB)
 S1C  Survivor 영역 1 의 현재의 용량 (KB)
 S0U  Survivor 영역 0 의 사용율 (KB)
 S1U  Survivor 영역 1 의 사용율 (KB)
 TT  전당 들어가 귀의치
 MTT  최대 전당 들어가 귀의치
 DSS  적절한 Survivor 사이즈 (KB)
 EC  Eden 영역의 현재의 용량 (KB)
 EU  Eden 영역의 사용율 (KB)
 YGC  Young 세대의 GC 이벤트수
 YGCT  Young 세대의 가베지 콜렉션 시간

-gcold 옵션 Old 및 Permanent 세대의 통계 데이터
 컬럼명 설명 
 PC  Permanent 영역의 현재의 용량 (KB)
 PU  Permanent 영역의 사용율 (KB)
 OC  Old 영역의 현재의 용량 (KB)
 OU  Old 영역의 사용율 (KB)
 YGC  Young 세대의 GC 이벤트수
 FGC  풀 GC 이벤트수
 FGCT  풀 가베지 콜렉션 시간
 GCT  가베지 콜렉션총시간

-gcoldcapacity Old 세대의 통계 데이터
 컬럼명 설명 
 OGCMN  Old 세대의 최소 용량 (KB)
 OGCMX  Old 세대의 최대 용량 (KB)
 OGC  Old 세대의 현재의 용량 (KB)
 OC  Old 영역의 현재의 용량 (KB)
 YGC  Young 세대의 GC 이벤트수
 FGC  풀 GC 이벤트수
 FGCT  풀 가베지 콜렉션 시간
 GCT  가베지 콜렉션총시간

-printcompilation HotSpot 컴파일 방법의 통계 데이터

 컬럼명 설명 
 Compiled  실행된 컴파일 태스크의 수
 Size  메소드의 바이트 코드의 바이트수
 Type  컴파일 타입
 Method  컴파일 방법을 특정하는 클래스명과 메소드명. 클래스명에서는, 이름 공간의 단락 문자로서 「.」(은)는 아니고 「/」이 사용된다. 메소드명은, 지정된 클래스내의 메소드이다. 이러한 2 개의 필드의 형식은, HotSpot -XX:+PrintComplation 옵션과 대응하고 있다


사용 방법

jstat -gcutil -h5 16543 1000 10

jstat를 -gcutil 옵션을 주고 5개씩 출력마다 헤더를 출력(h5)하고 1초마다 출력하되 10개씩 보여준다.

'개발 이야기 > Java Story' 카테고리의 다른 글

How to find bottleneck in J2EE application (조대협)  (0) 2010.02.11
JVM GC와 메모리 튜닝 (조대협)  (0) 2010.02.11
iBatis 튜토리얼 문서  (0) 2008.05.15
Web Service 이야기  (0) 2008.05.08
Xpath Syntax  (0) 2008.05.03
Posted by 서오석
,