Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 가비지 수집을 위해 Shenandoah 또는 ZGC를 사용하면 어떤 이점이 있습니까?


가비지 수집을 위해 Shenandoah 또는 ZGC를 사용하면 어떤 이점이 있습니까?


Shenandoah와 ZGC는 Java 애플리케이션에 대해 대기 시간이 짧고 효율적인 가비지 수집을 제공하도록 설계된 두 가지 고급 가비지 수집기입니다. 이러한 수집기를 사용하면 다음과 같은 몇 가지 주요 이점을 얻을 수 있습니다.

셰넌도어 GC:

1. 낮은 일시 중지 시간: Shenandoah GC는 대부분의 가비지 수집 작업을 애플리케이션과 동시에 수행하여 일시 중지 시간을 최소화하도록 설계되었습니다. 이렇게 하면 메모리 사용량이 많은 경우에도 애플리케이션이 응답성을 유지하고 제대로 작동할 수 있습니다[1][3].

2. 동시 압축: Shenandoah GC는 동시 압축을 수행합니다. 즉, 애플리케이션이 실행되는 동안 힙을 압축합니다. 이렇게 하면 전체 가비지 수집을 일시 중지할 필요성이 줄어들고 힙이 컴팩트하고 효율적으로 유지됩니다[1][3].

3. 힙 크기와 무관: Shenandoah GC의 일시 중지 시간은 힙 크기와 무관합니다. 즉, 상당한 일시 중지 없이 대규모 힙을 처리할 수 있으므로 대규모 메모리 할당이 필요한 애플리케이션에 적합합니다[1][3].

4. 높은 처리량: Shenandoah GC는 가비지 수집에 소요되는 시간을 최소화하여 높은 처리량을 제공하도록 설계되었습니다. 이렇게 하면 메모리 사용량이 많은 경우에도 애플리케이션이 계속 효율적으로 실행될 수 있습니다[1][3].

ZGC:

1. 낮은 대기 시간: ZGC는 가비지 수집에 소요되는 시간을 최소화하여 매우 짧은 대기 시간을 제공하도록 설계되었습니다. 이는 애플리케이션과 동시에 대부분의 가비지 수집 작업을 수행하고 단일 세대 지역 기반 접근 방식을 사용하여 이를 달성합니다[2].

2. NUMA 인식: ZGC는 NUMA를 인식하도록 설계되었습니다. 즉, 대규모 힙과 여러 CPU 코어를 효율적으로 처리할 수 있습니다. 이렇게 하면 가비지 수집기가 사용 가능한 하드웨어 리소스를 활용할 수 있습니다[2].

3. 높은 처리량: ZGC는 가비지 수집에 소요되는 시간을 최소화하여 높은 처리량을 제공하도록 설계되었습니다. 이렇게 하면 메모리 사용량이 많은 경우에도 애플리케이션이 계속 효율적으로 실행될 수 있습니다[2].

4. 실험적 기능: ZGC는 활성화하려면 특정 명령줄 옵션이 필요한 실험적 기능입니다. 매우 짧은 일시 중지 시간이 필요하고 대규모 메모리 할당을 처리할 수 있는 애플리케이션에 적합합니다[2].

요약하자면, Shenandoah와 ZGC는 모두 Java 애플리케이션에 대해 대기 시간이 짧고 효율적인 가비지 수집을 제공하도록 설계되었습니다. 높은 처리량이 필요하고 대규모 메모리 할당을 처리할 수 있는 애플리케이션에 적합합니다.

인용:
[1] https://clojure-goes-fast.com/blog/shenandoah-in-production/
[2] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[3] https://www.reddit.com/r/feedthebeast/comments/r24zg4/upgrade_your_java_to_one_that_has_the_shenandoah/
[4] https://stackoverflow.com/questions/64252590/how-does-clr-gc-compare-to-latest-zgc-and-shenandoah-gc-on-jvm
[5] https://www.uber.com/blog/jvm-tuning-garbage-collection/