JDK 8
- 함수형 프로그래밍 지원 - 람다식 & 스트림 API
- 새로운 날짜 및 시간 API: java.time 패키지
- Optional 클래스 -> NullPointer Exception 방지
JDK 9
- 모듈 시스템
- 간결한 문자열 (이전 jdk에서는 모든 글자를 무조건 2바이트에 담았지만 jdk 9 부터는 글자체크후 다 영어라면 1바이트에 담음 , 즉
메모리절약 , GC 부담감소, 속도 향상이 이루어짐)
- 인터페이스 private method 허용
- G1을 기본 가비지 컬렉터(GC)로 변경 (Parallel GC 에서 G1 GC로 교체 )
Parallel GC는 성능은 좋았지만 멈춘시간 (STW)이 문제 , 메모리가 꽉차서 청소를 시작하면 , 청소를 끝날 떄까지 앱 전체가 멈춤
G1은 전체를 다 청소하는게 아닌 , 가장 많이 쌓인 구역부터 우선적으로 청소
GC Root로부터 도달할 수 없는 객체를 식별하고 제거하는 GC 알고리즘 중 하나를 Mark and Sweep이라고함.
참조하지않는 객체를 삭제하며 , Young 영역과 Old 영역으로 나뉘어진다.
new 로 생성된 객체는 Eden 구역에 들어감 Minor GC(Young 영역 청소)가 일어나면 Survivor 구역으로 옮겨지고 1살이 됨
Minor GC가 반복될때마다 객체는 계속 나이를 먹고 JVM이 정한 임계치를 넘으면 Old 영역으로 보내지고 이를 promotion(승격)이라고 한다.
이후 여러 가비지컬렉터가 만들어짐
ZGC , Shenandoah
G1은 4기가 ~ 32기가 정도의 메모리에 가장 효율적
ZGC, Shenandoah 는 초대형 서버를 위해 나옴, 힙이 아무리 커도 멈춤시간을 일정하게 유지하기 위함(예 128기가 ,1TB)
초저지연을 위함
일반적인 개발 상황에서는 G1으로 충분하다.
'JAVA' 카테고리의 다른 글
| JVM(Java virtual Machine)에 대해 (0) | 2026.01.18 |
|---|---|
| 자바 버전 정리하면서 DeepDive (jdk13 ~ ) (0) | 2026.01.18 |
| ArrayList 와 LinkedList (0) | 2024.06.13 |
| length 와 size 의 차이 (0) | 2024.06.13 |
| 빅오 표기법 (0) | 2024.05.28 |
주니어 모코코 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!