2호03 / 05
Java 27 정식 출시 — G1이 모든 환경의 기본 GC가 된다
원문 OpenJDK 공지 ↗
Java 27이 9월 15일 정식 출시됐습니다. 8월 20일 릴리스 후보(빌드 35)가 나온 뒤 P1 버그가 보고되지 않아 그대로 GA가 됐습니다. 다운로드는 jdk.java.net/27 입니다.
들어간 것
| JEP | 내용 | 상태 |
|---|---|---|
| 523 | G1을 모든 환경의 기본 GC로 | 최종 |
| 534 | 컴팩트 객체 헤더를 기본으로 | 최종 |
| 527 | TLS 1.3에 양자내성 하이브리드 키 교환 | 최종 |
| 536 | JFR 인프로세스 데이터 삭제 | 최종 |
| 531 | Lazy Constants | 3차 프리뷰 |
| 532 | 패턴·instanceof·switch의 원시 타입 | 5차 프리뷰 |
| 533 | 구조화된 동시성 | 7차 프리뷰 |
| 538 | 암호 객체 PEM 인코딩 | 3차 프리뷰 |
| 537 | Vector API | 12차 인큐베이터 |
운영에 바로 영향이 있는 둘
G1이 어디서나 기본이 됩니다. 지금까지는 CPU가 적거나 메모리가 작은 환경에서 Serial GC가 자동 선택됐습니다. 컨테이너에 CPU 1~2개를 주고 돌리던 서비스라면 Java 27부터 GC가 바뀝니다. 명시적으로 -XX:+UseSerialGC를 주면 그대로 유지됩니다.
컴팩트 객체 헤더가 기본이 됩니다. 객체마다 붙던 헤더가 12바이트에서 8바이트로 줄어 작은 객체가 많은 힙에서 메모리가 눈에 띄게 줄 수 있습니다. 이 역시 아무 설정 없이 적용됩니다.
글에 없는 것
공지에는 제거·폐기된 기능 목록과 LTS 여부가 적혀 있지 않습니다. 관례대로라면 Java 27은 비-LTS이고 다음 LTS는 Java 29입니다. 성능 수치도 공지에는 없습니다.
실무에서 할 일
LTS만 따라가는 팀은 건너뛰어도 됩니다. 다만 두 기본값 변경은 다음 LTS에도 그대로 들어올 것이라, 미리 스테이징에서 GC 로그와 힙 사용량을 한 번 비교해 두면 나중에 놀라지 않습니다. 구조화된 동시성이 7차 프리뷰라는 건 아직 API가 흔들린다는 뜻이라 프로덕션 코드에 쓰기엔 이릅니다.
2호의 다른 글
요약으로 한 번에 보기 →- 01Shopify가 React Native를 버리고 Swift·Kotlin으로 돌아간다
- 02Tailwind CSS가 Shopify에 인수됐다 — 라이선스는 MIT 그대로
- 03Java 27 정식 출시 — G1이 모든 환경의 기본 GC가 된다지금 읽는 글
- 04NVIDIA가 Rust로 GPU 커널을 쓰는 공식 경로를 열었다 — 두 갈래, 둘 다 알파
- 05Android 17 QPR1, AOSP 없이 새 API를 넣었다 — Honeycomb 이후 처음
2026년 9월 15일에 올라온 글
그날 대시보드 →댓글
불러오는 중…