1. 전체 Heap 메모리 크기
-Xms : 초기값
-Xmx : 최대값
ex) -Xms1200m -Xmx1200m
* WAS의 경우 통상 2GB~4GB로 설정하여 사용함
[설정 방법]
1) 평상시 사용하는 Heap 크기와 동일하게 적용한다.
2) Heap 사용량이 최소값으로 사용되던 중 특정 시점에 증가되는 경우 최소 값과 최대값을 다르게 설정한다.
3) Heap Size 확장이 자주 발생하거나 조절할 필요가 없을 경우 최소값과 최대값을 동일하게 설정한다.
2. New 영역 크기
-Xmn
-XX:NewSize
ex) -Xmn -XX:newSize=400m
* New 영역을 늘려주면 Full GC 발생 횟수를 줄일 수 있음.
3. New 영역과 Old 영역간의 비율
-XX:NewRatio
ex) -XX:NewRatio=2
* New 영역 크기 = (Heap 전체 크기) / (NewRatio + 1)
[설정 방법] - 2, 3
1) NewSize와 NewRatio를 동일하게 설정했을 경우 큰 값을 사용한다.
2) 대부분 객체는 New 영역의 설정이 전반적인 성능에 영향을 준다.
3) New 영역이 작은 경우, Old로 넘어가는 메모리의 양이 많아 Full Gc가 자주 발생한다.
4) 일반적으로 전체 영역의 10%로 설정한다.
4. Eden, Survivor 영역 비율
-XX:SurvivorRatio
ex) -XX:SurvivorRatio=8
* Survivor 영역의 크기 = (New 영역 전체 크기) / (Survivor + 2)
-XX:UseAdapiveSizePolicy와 함께 사용해야하나, 빈번한 GC로 성능이 저하되는 경우가 있음.
5. Perm 영역 크기
-XX:PermSize : 초기값
-XX:maxPerSize : 최대값
-XX:PermSize=64m -XX:MaxPermSize=64m
* 일반적으로 초기값, 최대값을 동일하게 가져가며 Perm영역 확장시 Full GC가 발생한다.
* JDK 1.8 버전부터는 해당 옵션이 삭제되었다.
6. Metaspace 영역 크기
-XX:MetaspaceSize : 초기값
-XX:MaxMetaspaceSize : 최대값
7. HeapDump생성
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath
* 해당 옵션을 사용하여야 메모리 부족으로 장애가 발생하여도 원인을 빠르게 찾을 수 있다.
8. 기동모드
-server
-client
* 일반적으로 server모드로 기동하며 client모드의 경우에는 빠른 시작과 적은 메모리 사용에 최적화되어 있다.