JDK 25: 해시 코드 상수 폴딩을 통한 String 성능 향상

2025-05-02

JDK 25는 String::hashCode 함수의 상수 폴딩을 가능하게 함으로써 String 클래스의 성능을 크게 향상시켰습니다. 이를 통해 정적이고 불변인 Map에서 String을 키로 사용하는 경우 특히 성능이 크게 향상됩니다. 네이티브 호출의 MethodHandle을 String 키로 액세스하는 시나리오에서는 8배 이상의 성능 향상이 관찰되었습니다. 이 최적화는 내부 필드 String.hash에 @Stable 주석을 붙임으로써 구현됩니다. 이를 통해 JVM은 해시 코드를 캐싱하고 재사용할 수 있게 되어 0이 아닌 해시 코드에 대한 재계산을 방지할 수 있습니다. 0인 해시 코드는 최적화를 방해할 수 있지만 향후 수정될 것으로 예상됩니다.

더 보기
개발

JVM 시작 과정 심층 분석

2025-01-09

오라클 자바 팀의 멤버인 Billy Korando가 2025년 1월 9일에 JVM 시작 과정에 대한 심층적인 기사를 발표했습니다. 이 기사는 JVM 초기화의 내부 메커니즘을 자세히 분석하여 자바 개발자들에게 귀중한 통찰력을 제공합니다. 자세한 내용은 비디오 설명을 참조하십시오.

더 보기
개발 시작

Valhalla: Java의 대규모 리팩토링이 완료 단계에 접어들다

2024-12-17

10년에 걸친 노력 끝에 Java의 야심찬 리팩토링 프로젝트인 Valhalla가 완료 단계에 접어들었습니다. 클래스와 기본 자료형 간의 차이를 해소하기 위해 Valhalla는 클래스의 코딩 편의성과 기본 자료형의 성능을 결합한 값 클래스를 도입하여 평평하고 컴팩트한 메모리 레이아웃을 제공합니다. Devoxx 2024에서 Java 언어 아키텍트인 Brian Goetz는 값 클래스, null 제약 유형, 향상된 확정 대입 분석, 엄격한 초기화 등 주요 기능을 강조하며 포괄적인 업데이트를 제공했습니다.

더 보기
개발 값 클래스