JAVA 문자열(String) 성능 대폭 향상
(inside.java)서론
- 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 처리 성능 크게 개선 가능.