1. Heap 사이즈 최대/최소 설정
-Xms1024m
-Xmx1024m
참고
- WAS의 경우 2~4GB 정도 설정
- 독립 실행 배치는 125~256MB 정도 설정
- 대량 데이터 로드하여 분석하는 시스템의 경우 10GB 이상 설정하기도 함
- 응답시간이 짧은 경우 New 영역을 늘려주면 Full GC 발생 횟수를 줄일 수 있음
2. New 영역 크기
-Xmn512m
-XX:NewSize=512m
3. New영역과 Old영역 간 비율
-XX:NewRatio=2
Yong:Old 비율이 1:2이라는 의미
4. New영역의 Eden, Survivor 영역비율
-XX:SurvivorRatio=8
Young 전제 2GB 에서 SurvivorRatio가 8이면 Eden영역이 1.6GB
Survivor영역이 0.4GB이고 Survivor 영역은 S1,S2로 2개의 영역으로
이루어져 있으므로 각각 0.2GB, 결과적으로 Eden과 Survivor 비율은 1:8
- Survivor 영역 크기 = New 영역 전체 / (SurvivorRatio + 2)
- UseAdaptiveSizePolicy는 New영역, Eden, Survivor 비율을 동적으로 조정하는 옵션
- -XX:-UseAdaptiveSizePolicy 처리하여 빈번한 GC로 성능 저하 방지
- CMS GC, NewRatio 튜닝하기
5. Perm 영역 크기
-XX:PermSize=64m
-XX:MaxPermSize=64m
- Java 1.8 부터 Perm 영역 없어짐
6. Metaspace 영역 크기
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=256m
7. Heap Dump 생성
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/logs001/java/heapdump/
- Eclipse MAT(Memory Analyze Tool)가 우수한 Heap Dump 분석 도구로 사용 권고함
8. 기동모드
-server
-client
- 운영환경에서는 기본적으로 server 모드로 기동
- client 모드의 경우 빠른 시작과 적은 메모리 사용에 최적화 되어 있음(64bit JDK에서는 사용 불가)
8. promotion failed
-
cms gc에서 promotion failed 발생시 조치 방안
-Xmx4G: 가용 메모리크기가 된다면 Heap 사이즈를 증가 -XX:NewRatio: 전체 Heap에서 New영역 비율을 증가 -XX:PromotedPadding: 제공되는 패딩 양을 늘림 -XX:CMSInitiatingOccupancyFraction=60 -XX:+UseCMSInitiatingOccupancyOnly cms gc 주기를 더 빨리 시작
댓글남기기