# JAVA 문자열(String) 성능 대폭 향상

> Clean Markdown view of GeekNews topic #20637. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20637](https://news.hada.io/topic?id=20637)
- GeekNews Markdown: [https://news.hada.io/topic/20637.md](https://news.hada.io/topic/20637.md)
- Type: news
- Author: [baeba](https://news.hada.io/@baeba)
- Published: 2025-05-02T09:47:55+09:00
- Updated: 2025-05-02T09:47:55+09:00
- Original source: [inside.java](https://inside.java/2025/05/01/strings-just-got-faster/)
- Points: 8
- Comments: 0

## Summary

JDK 25에서는 `String::hashCode`가 **상수 폴딩** 처리되어 **불변 Map**에서 문자열 키 기반 조회 시 성능이 크게 향상되었습니다. `Map<String, MethodHandle>` 구조에서 **키 조회**가 정적으로 최적화되어, 해시 계산과 Map 인덱스 계산이 컴파일 타임에 상수로 처리됩니다. 벤치마크 결과, 이전 JDK 24 대비 최대 8배 이상의 성능 개선이 확인되었습니다. 그러나 **hashcode가 0**인 경우 상수 폴딩이 되지 않는 단점이 있으며, JEP 502를 통해 사용자 코드에서도 유사 기능이 제공될 예정입니다.

## Topic Body

**서론**  
  
* 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 처리 성능 크게 개선 가능.

## Comments



_No public comments on this page._
