Value Classes의 성능 향상은 여전히 컴파일러의 지원이 필요하다

Value Classes Still Need Compiler Sympathy

JDK 28에 통합된 JEP 401은 value class를 미리보기 기능으로 제공하며, 이는 JVM의 최적화 기회를 확장합니다. 그러나 value class가 항상 성능을 향상시키는 것은 아닙니다. 이 글은 JVM이 현재 어떤 표현을 선택하는지, 그리고 어떤 상황에서 성능 저하가 발생하는지 세 가지 예제를 통해 설명합니다. 불변성 덕분에 플래트닝이 가능하지만, 가변 필드는 원자적 업데이트를 위해 참조 표현을 사용해야 합니다. 또한 identity를 제거하면 할당이 사라질 수 있지만, 타입 소거로 인해 메가모픽 호출에서는 다시 할당이 발생할 수 있습니다. C2 컴파일러의 한계와 이를 극복하기 위한 소스 레벨 수정 방법도 다룹니다.

value class는 JVM에 더 많은 의미 정보와 자유를 주는데, 어떻게 그들을 사용하는 것이 프로그램을 느리게 만들 수 있을까요?

이 날의 다른 글

2026-08-26