출처 : http://5dol.tistory.com/182
우선 간단히 확인하면 아래처럼 나온다. jstat -옵션 -pid -시간 하면 된다.
ex) ~]jstat -gc 16543 1000
저건 pid 16543(java)를 1초에 한번씩 결과값을 보여달란거다.
pid는 ps -efw | grep java로 알아내면 된다.
~] jstat --help
invalid argument count Definitions: |
옵션은 다음과 같다.
| 옵션명 | 내용 |
| 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개씩 보여준다.