JDK18의 새로운 가비지 컬렉터 4가지 - GC모드 직렬 GC, 병렬 GC, G1 GC 및 ZGC
JDK18의 새로운 가비지컬렉터 4가지 - GC모드 직렬 GC, 병렬 GC, G1 GC 및 ZGC
JDK GC 비교
2022년 6월 6일의 Billy Korando의 번역
JDK 18부터 JDK는 4개의 가비지 수집기(GC)와 함께 패키지로 제공됩니다. 직렬 GC, 병렬 GC, G1 GC 및 ZGC. 대부분의 시나리오에서 기본 GC인 G1 GC가 최선의 선택입니다. 그러나 GC의 설계 목표를 이해하면 도움이 될 수 있으며 애플리케이션의 성능 목표를 달성하는 데 도움이 될 수 있습니다. 이 기사에서는 각 GC와 언제 사용해야 하는지에 대해 개략적으로 살펴볼 것입니다.
SerialGC (직렬 가비지 수집기)
직렬 GC는 GC 중 "가장 단순"합니다. 단일 스레드에서 모든 작업을 수행하므로 이름이 "직렬"입니다.
직렬 GC는 리소스가 제한되고 라이브 세트가 100MB 이하인 환경에서 실행되는 애플리케이션에 가장 적합합니다.
직렬 GC는 VM 플래그로 활성화할 수 있습니다 -XX:+UseSerialGC.
ParallelGC (병렬 가비지 수집기)
병렬 GC는 구조적으로 직렬 GC와 유사하지만 작업을 수행할 때 여러 스레드를 활용할 수 있습니다.
병렬 GC는 처리량을 최대화하도록 설계되었습니다. 따라서 일시 중지 시간이 길어지더라도 처리량이 최우선 순위인 애플리케이션이 이상적인 사용 사례입니다.
병렬 GC는 VM 플래그로 활성화할 수 있습니다 -XX:+UseParallelGC.
G1 GC (가비지 컬렉터)
Garbage-First, (G1) GC는 JDK 9 1 에서 기본 GC로 지정되었습니다 . G1 GC는 대부분 동시 GC입니다. 즉, 애플리케이션이 실행되는 동안 작업을 수행할 수 있습니다.
G1 GC는 대기 시간과 처리량 사이의 균형을 유지하려고 시도하며 최소 리소스 환경에서 많은 리소스 환경으로 확장할 수 있습니다.
G1 GC는 기본 GC이지만 VM 플래그를 사용하여 명시적으로 활성화할 수 있습니다 -XX:+UseG1GC.
Z GC(가비지 컬렉터)
최신 GC인 ZGC는 JDK 15의 프로덕션 기능으로 도입되었습니다. ZGC는 동시 GC이기도 합니다.
ZGC는 일시 중지 시간이 250마이크로초를 거의 초과하지 않는 저지연에 중점을 두고 힙 크기를 8MB에서 16TB로 확장할 수 있습니다.
ZGC는 VM 플래그로 활성화할 수 있습니다 -XX:+UseZGC. .