-
자바 버전별 기능을 다시 찾아보던 중 java 10에서 병렬 처리 가비지 컬렉션 도입으로 성능 향상이라는 글을 보았다.
https://www.skyer9.pe.kr/wordpress/?p=287
병렬처리 가비지 컬렉션 parallel GC는 이미 java 7,8에 기본으로 사용되었고, JAVA11을 쓰면서 기본 GC는 G1 GC인 줄 알고있었기에 뭔가 또 새로운게 나온 것 같아 찾아보았더니 Z GC라는 것을 발견할 수 있었다.(참고로 Java 9, 10,11은 G1이다)
출처 - https://velog.io/@hygoogi/%EC%9E%90%EB%B0%94-GC%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C
Z GC
비교적 최근에 나온 GC이며, 아래의 목표를 충족하기 위해 설계된 확장 가능하고 낮은 지연율(low latency)을 가진 GC이다.
- 정지 시간이 최대 10ms를 초과하지 않음
- Heap의 크기가 증가하더라도 정지 시간이 증가하지 않음
- 8MB~16TB에 이르는 다양한 범위의 Heap 처리 가능
이대로라면 지금까지 나온 어떤 GC보다 혁신적에 가까운데, 어떻게 이게 가능할까?
ZGC는 ZPages라는 G1 GC의 Region과 비슷한 영역의 개념을 사용하지만, Region은 고정된 크기인 것에 반해 ZPages는 크기가 2MB의 배수로 동적으로 생성 및 삭제될 수 있다.
사이즈별 Heap 영역
- Small (2MB)
- Medium(32MB)
- Large(N * 2MB)
중요 포인트
- ZGC Heap은 위와 같은 다양한 사이즈의 영역이 여러 개 발생할 수 있다.
- ZGC가 compaction된 후, ZPage는 ZPageCache라고 불리는 캐시에 삽입된다.
- 캐시 안의 Zpage는 새로운 Heap 할당을 위해 재사용할 준비를 한다.
- 메모리를 커밋과 커밋하지 않는 작업은 매우 비싼 작업이므로 캐시의 성능에 중요한 영향을 끼친다.
'개발 > JAVA' 카테고리의 다른 글
boolean 타입 명 앞의 is에 대해 (0) 2021.07.11 JVM(Java Virtual Machine) 구조 (0) 2021.03.19 Garbage collection -가비지 컬렉션 (0) 2021.03.19 Collection과 Map (0) 2021.03.19 array형 json string값을 object로 변환할때 ( json string array to object) (0) 2021.03.17 댓글