JDK 28 Valhalla 의 값 객체 배열이 얼마나 납작해지나 재봤다 — long 을 감싼 내 값 객체는 오히려 원소당 8바이트 커졌다
Integer·LocalDate 배열은 원소당 20바이트에서 8로 접혔고 Long·Double 은 그대로였다. 경계는 JEP 가 적은 64비트가 아니라 널 표식 1바이트를 넣고 2의 거듭제곱으로 올린 8바이트라, 필드 합 7 까지만 접힌다. 8바이트짜리 내 값 레코드는 안 접힐 뿐 아니라 그 표식 때문에 힙 객체가 16에서 24로 부풀어 원소당 28바이트가 됐고, Long·Double 만 HotSpot 이 클래스 이름으로 예외를 둬 안 부푼다. LocalDate 는 JEP 그림에 맞게 month·day 가 미리 byte 로 깎여 있었다. JDK 28-ea+17 실측.
https://zerry.co.kr/blog/valhalla-flattening-eight-byte-line
#Java #JVM #Valhalla #메모리 #성능