Value Classes は依然としてコンパイラの支援を必要とする

Value Classes Still Need Compiler Sympathy

JDK 28のプレビュー機能として統合されたJEP 401(Value Classes)は、値クラスにアイデンティティを持たせないことでJVMに最適化の自由を与えます。しかし、すべてのクラスを値クラスにすれば性能が向上するわけではなく、場合によっては参照表現の方が高速なこともあります。本稿では、不変性によるフラット化、スカラー化による割り当て除去、型消去による動的ディスパッチでのマテリアライズという3つの例を通して、JVMが現在可能な最適化とその限界を示します。特に、値クラスが逆に性能を悪化させるケースを実例で解説し、コンパイラの支援が不可欠であることを明らかにします。

値クラスはJVMにより多くの意味情報と自由度を与えますが、それでもコンパイラの支援なしには、その潜在能力を引き出すことはできません。

この日のほかの記事

2026-08-26