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 등 덤프나 로그를 분석하는 것은 많은 지식을 요구한다. 많이 알 수록 많이 보이고 정확히 알 수록 정확히 분석 할 수 있다.

'알아두면 좋은 IT 지식 > Java' 카테고리의 다른 글
GC 로그 분석 툴 - jstat 사용법 (0) | 2023.12.25 |
---|---|
자바 한글 인코딩 변환 (utf-8 to euc-kr java) (0) | 2022.12.22 |
[IT] Java Thread Dump 생성 및 분석 방법 (kill -3 / jstack / jcmd) (0) | 2022.08.22 |
JSON이란? (0) | 2020.10.15 |
url에서 pdf를 읽어와서 파일로 저장하기 (0) | 2020.09.29 |