서론

  • JDK 25에서 String::hashCode가 대부분 상수 폴딩 처리되도록 개선됨.
  • 불변 Map에서 문자열 키 기반 조회 시 성능이 크게 향상됨.

본론

  • Map<String, MethodHandle> 구조에서 key lookup이 정적으로 최적화됨.
  • 내부적으로 String.hash 필드에 @Stable 적용, hash 값이 고정되면 JVM이 캐시 신뢰함.
  • 이로 인해 해시 계산, Map 인덱스 계산, 메서드 핸들 조회가 모두 컴파일 타임에 상수로 처리됨.
  • benchmark 결과, 기존 JDK 24 대비 최대 8배 이상 성능 개선 확인됨.
  • 단점은 hashcode가 0인 경우 상수 폴딩이 되지 않음 ("" 문자열 포함).
  • JEP 502 통해 사용자 코드에서도 향후 유사 기능 제공 예정.

결론

  • JDK 25의 String 최적화는 정적 구조 기반 코드에 효과적.
  • @Stable은 내부 전용이나 향후 공개 기능으로 확장될 가능성 있음.
  • 최신 JDK 도입 시, 문자열 기반 Map 처리 성능 크게 개선 가능.