가비지 수집 일시 중지를 최소화하도록 JVM 매개변수를 구성하려면 다음 단계를 수행할 수 있습니다.
1. 힙 크기 설정:
- 최대 힙 크기 설정:- 최대 힙 크기를 설정하려면 `-Xmx` 플래그를 사용하세요.
- 예를 들어 `-Xmx2g`는 최대 힙 크기를 2GB로 설정합니다.
- 초기 힙 크기 설정:
- 초기 힙 크기를 설정하려면 `-Xms` 플래그를 사용하세요.
- 예를 들어 `-Xms2g`는 초기 힙 크기를 2GB로 설정합니다.
2. 젊은 세대 크기 설정:
- 젊은 세대 크기 설정:- 젊은 세대 크기를 설정하려면 `-Xmn` 플래그를 사용하세요.
- 예를 들어 `-Xmn1g`는 Young Generation 크기를 1GB로 설정합니다.
3. 가비지 수집기 설정:
- 가비지 우선(G1) 가비지 수집기 사용:- G1 가비지 수집기를 활성화하려면 `-XX:+UseG1GC` 플래그를 사용하세요.
- 이 수집기는 일시 중지 시간을 최소화하도록 설계되었습니다.
4. 최대 일시 중지 시간 설정:
- 최대 일시 중지 시간 설정:- 최대 일시 중지 시간을 설정하려면 `-XX:MaxGCPauseMillis` 플래그를 사용하세요.
- 예를 들어 `-XX:MaxGCPauseMillis=200`은 최대 일시 중지 시간을 200밀리초로 설정합니다.
5. 병렬 GC 스레드 설정:
- 병렬 GC 스레드 수 설정:- 병렬 GC 스레드 수를 설정하려면 `-XX:ParallelGCThreads` 플래그를 사용하세요.
- 예를 들어 `-XX:ParallelGCThreads=20`은 병렬 GC 스레드 수를 20으로 설정합니다.
6. 동시 GC 스레드 설정:
- 동시 GC 스레드 수 설정:- 동시 GC 스레드 수를 설정하려면 `-XX:ConcGCThreads` 플래그를 사용하세요.
- 예를 들어 `-XX:ConcGCThreads=5`는 동시 GC 스레드 수를 5로 설정합니다.
7. 시작 힙 점유율 설정:
- 시작 힙 점유율 설정:- 시작 힙 점유 비율을 설정하려면 `-XX:InitiatingHeapOccupancyPercent` 플래그를 사용하세요.
- 예를 들어 `-XX:InitiatingHeapOccupancyPercent=70`은 시작 힙 점유 비율을 70%로 설정합니다.
8. 모니터링 및 조정:
- 가비지 수집 모니터링:- VisualVM 또는 GCeasy와 같은 도구를 사용하여 가비지 수집을 모니터링합니다.
- 필요에 따라 JVM 매개변수를 조정하여 일시정지 시간을 최소화합니다.
다음 단계를 수행하면 가비지 수집 일시 중지를 최소화하고 효율적인 애플리케이션 성능을 보장하도록 JVM 매개변수를 구성할 수 있습니다.
인용:[1] https://www.uber.com/blog/jvm-tuning-garbage-collection/
[2] https://docs.datastax.com/en/dse/6.8/managing/Operations/configure-garbage-first-collection.html
[3] https://sematext.com/blog/java-garbage-collection-tuning/
[4] https://docs.oracle.com/cd/E55119_01/doc.71/e55122/cnf_jvmgc.htm
[5] https://docs.oracle.com/cd/E40972_01/doc.70/e40973/cnf_jvmgc.htm