Print
카테고리: [ Java ]
조회수: 1692

Java 11 버전의 GC는 많은 개선과 변화를 가지고 왔다.

 

ZGC(Z Garbage Collectors)란?

ZGC는 아래의 목표를 충족하기 위해 설계된 확장 가능하고 낮은 지연율(low latency)을 가진 GC이다.

처음에는 Linux/x64을 지원했으며 현재는 아래와 같은 플랫폼에 지원되고 있다.

Platform Supported Since Comment
Windows O JDK 14 Requires Windows version 1803 (Windows 10 or Windows Server 2019) or later.
macOS O JDK 14  
Linux/x64 O JDK 11  
Linux/AArch64 O JDK 13  

JVM으로 구동되는 애플리케이션의 경우, GC가 동작할 때 Stop-The-World로 인해 성능에 큰 영향을 미쳐왔다.

이러한 정지 시간을 줄이거나, 없앰으로써 애플리케이션의 성능 향상에 기여한다. ZGC의 주요 원리는 Load barrier와 Colored Pointer를 함께 사용하는 것이다.

이를 통해 Thread가 동작하는 중간에도 ZGC가 객체 재배치 같은 작업을 수행할 수 있다.

ZGC 동작 ZGC는 메모리를 ZPages라고 불리는 영역으로 나눈다. ZPages는 동적 사이즈(G1 GC와 다름)로 2MB의 배수가 동적으로 생성 및 삭제될 수 있다.

 

ZGC 동작

ZGC는 메모리를 ZPages라고 불리는 영역으로 나눈다.

ZPages는 동적 사이즈(G1 GC와 다름)로 2MB의 배수가 동적으로 생성 및 삭제될 수 있다.

사이즈별 Heap 영역

중요 포인트

 

ZGC의 “Z”

아무 의미 없다.

원래 ZFS에 의해 영감을 받았거나 여러 면에서 처음 나와 혁명적인 의미를 가진다는 가설이 있었다.

하지만 Z는 그냥 이름일뿐이며 자세한 사항은 Jeff Bonwick’s Blog를 참조하길 바란다.

 

참조

https://01010011.blog/category/programming/

https://www.popit.kr/번역글-새로운-시대의-java를-맞이하며/

https://readystory.tistory.com/48

https://wiki.openjdk.java.net/display/zgc/Main