컴팩트 객체 헤더
더 나은 메모리 밀도와 캐시 사용을 위해 객체 헤더 크기를 절반으로 줄입니다.
코드 비교
✕ Java 8
// Default: 128-bit object header // = 16 bytes overhead per object // A boolean field object = 32 bytes! // Mark word (64) + Klass pointer (64)
✓ Java 25
// -XX:+UseCompactObjectHeaders // 64-bit object header // = 8 bytes overhead per object // 50% less header memory // More objects fit in cache
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
50% 작은 헤더
객체당 16바이트 대신 8바이트.
더 나은 캐시 사용
더 많은 객체가 CPU 캐시 라인에 들어갑니다.
더 높은 밀도
동일한 힙 크기에 더 많은 객체를 넣습니다.
이전 방식
128비트 헤더
모던 방식
64비트 헤더
JDK 버전
25
난이도
고급
JDK 지원
컴팩트 객체 헤더
사용 가능
JDK 25 LTS에서 확정 (JEP 519, 2025년 9월).
동작 원리
컴팩트 객체 헤더는 객체당 오버헤드를 128비트에서 64비트로 줄입니다. 이는 힙 사용량을 줄이고 CPU 캐시 효율성을 향상시킵니다.
관련 문서