카테고리 없음

[JVM] JAVA JVM, GC 설정 방법

SDeveloper 2021. 6. 21. 22:43
반응형

출처) https://asfirstalways.tistory.com/158

 

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모드의 경우에는 빠른 시작과 적은 메모리 사용에 최적화되어 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형