- @참고: https://steady-coding.tistory.com/591

 

Heap 모니터링 도구


GUI 도구

- VisualVM: OracleJDK에서 제공하는 GUI 모니터링 툴

전반적인 CPU 사용량, Runtime Area 사용량을 볼 수 있다.

 

- JConsole: JDK에서 제공

데이터를 csv 형태로 저장할 수 있음

관측은 4초에 한번씩 실행됨

 

명령어 도구

- jstat: JDK에서 제공

// 현재 JVM 에서 실행되고 있는 application의 PID 목록 가져오기
$ jps
26532 HeapDumpApplication
... 중략

// GC 통계 정보 출력하기
$ jstat -gc 26532
S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
0.0    0.0    0.0    0.0   28672.0  10240.0   40960.0     9744.5   36784.0 34801.9 4864.0 4223.8     52    3.302  16     43.246   46.549

// GC 사용량 출력하기
$ jstat -gcutil 26532
S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549

// 5개씩 출력할 때마다 헤더를 출력하고, 1초마다 출력하되, 10개의 결과를 보여주기
$ jstat -gcutil -h5 26532 1000 10
S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549
0.00   0.00  35.71  23.79  94.61  86.84     52    3.302    16   43.246   46.549

 

- gc 옵션 시 데이터 의미

 

- gcutil 옵션 시 데이터 의미

 

Heap Dump 뜨기


Visual VM에서 뜰 수 있으나 OOM인 경우, 갑작스럽게 메모리 사용량이 크게 증가하는 순간에 사용할 수 없다.

1. jmap

jmap -dump:format=b,file=heapdump.hprof 26532

2. VM Options 추가 

OOM 발생 시 자동 Heap Dump 생성을 위해서

VM Options 로 아래 옵션을 추가한다.

-XX:+HeapDumpOnOutOfMemoryError
//생략시 어플리케이션 실행한 루트 디렉토리에 dump 파일이 생성됨
-XX:HeapDumpPath=c:/dump/heapdump.hprof

 

Heap Dump 분석하기


1. MAT(Eclipse Memory Analyzer) 툴을 이용하여 분석

MAT 툴이 할당할 수 있는 메모리 크기가 분석하려는 heap dump 파일 크기보다 켜야하므로 MemoryAnalyzer.ini 파일에서 아래와 같이 Xmx 크기를 세팅할 수 있다.

-vmargs
-Xmx15G
-XX:-UseGCOverheadLimit

Dominator Tree 로 Heap Dump 뜰 당시에 만들어진 Java 객체를 한 눈에 확인 할 수 있다.

'Java' 카테고리의 다른 글

[Java] 연산자 우선순위  (0) 2022.12.18
[Java] LocalDateTime, Timestamp 변환  (0) 2021.02.26
[Java] Set to List, List to Set  (0) 2021.02.25
[Java] Optional 사용법  (0) 2021.02.19
[Java] 파일 입출력  (0) 2021.01.27
블로그 이미지

uchacha

개발자 일지

,