본문 바로가기

알아두면 좋은 IT 지식/Java

GC 분석 툴 - PMAT(IBM GC Pattern Modeling and Analysis Tool for Java Garbage Collector)

GC(Garbage Collection) 란?

메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다.

(출처 : 위키백과)

GC 로그 분석이 필요한 이유?

프로그램의 성능 문제나 메모리 관련 이슈(OOM 등) 발생 시 GC 로그 분석을 통해서 원인 파악 및 해결책(GC 튜닝 등)을 찾을 수 있다.

왜 IBM PMAT를 사용하는가?

프로그램 용량이 10MB 이하로 매우 가볍고 java가 설치된 환경에서 jar파일을 실행만 하면 된다. 단점으로는 분석기능이 단순하고 기본 지식이 없다면 사용하기에 어렵다고 느낄 수 있다.

 

 

 

다운로드

https://www.ibm.com/support/pages/ibm-pattern-modeling-and-analysis-tool-java-garbage-collector-pmat

 

 

 

기본 사용법

1. ga458.jar 실행

cmd창에서 java -jar 명령어로 ga458.jar를 실행한다. (Xms, Xmx 값은 분석하려는 힙 덤프 파일의 용량 +@로 설정)

 

2. File > Open verbosegc Files(AutoDetection) > GC 파일 선택 후 Open

 

3. Open된 File List에서 GC분석에 대한 기본 정보 제공

분석 항목 설명
Total Number of verboseGC cycles JVM 재시작 횟수
Number of Garbage Collections GC 빈도수
Number of Allocation failures  AF(할당실패) 빈도수
Number of Java heap exhaustion  OOM 발생 수
First Garbage Collection  최초 GC 발생 일시
Last Garbage Collection  최종 GC 발생 일시
Overall Garbage Collection overhead  전체 GC 처리 비율
Maximum Garbage Collection overhead  최대 GC 처리 비율
Number of 100% AF overhead  100% AF 발생 수
Total Garbage Collection pause  총 GC 수행 시간
Maximum Tenured Area usage  최대 영역 사용
Average Tenured Area usage  평균 영역 사용
Number of Explicit Garbage Collection  Explicit GC 수
Maximum Allocation Request  최대 할당 요청
There is no object request larger than 10 M bytes  10 M bytes 이상의 객체 요청
Explicit Garbage Collection  Explicit GC 비율
Longest Garbage Collections  수행시간이 제일 긴 GC 5개
Shortest Garbage Collection Intervals  발생 간격이 제일 짧은 GC 5개
Java Heap Activity Analysis and Recommendation report  힙 동작 분석 및 권장사항

제공되는 분석 정보를 해석해서 문제의 원인을 찾거나 해결하는 것은 사용자의 몫이다. GC 빈도가 너무 높진 않은지? AF, OOM 등이 여러번 발생하지 않았는지? GC 평균 사용 영역이 높진 않은지? (10% 이상) 등 상세 분석의 영역은 GC환경에 따라서 다르기도 하고 GC동작에 대한 이해도가 필요하다.

 

4. Analysis 메뉴를 통한 GC 분석

PMAT에서는 GC 분석을 도와주기 위한 몇가지 기능을 제공하고 있다.

 

4-1. Analysis > GC View All

GC 목록을 Free, AF, Mark, Sweep, Compact, GC, Exhausted 등으로 정렬하여 분석할 수 있는 기능을 제공한다.

 

4-2. Analysis > Graph View All

GC를 차트로 표현하여 시간에 따른 변경 추이를 분석한다

Free, Used, Total 을 체크(표시)하여 GC 동작에 따른 메모리 변경 추이를 분석하거나, Mark, Sweep, Compact 를 표시하여 GC 수행을 분석할 수 있다.

 

 

 

GC분석을 비롯해서 HeapDump, ThreadDump, TCPDump 등 덤프나 로그를 분석하는 것은 많은 지식을 요구한다. 많이 알 수록 많이 보이고 정확히 알 수록 정확히 분석 할 수 있다.