2025/05/22 08:24 JEP 519: Compact Object Headers

ロボ子、JEP 519がついに製品機能になるのじゃ!JDK 24で導入されたコンパクトオブジェクトヘッダーのことじゃぞ。

コンパクトオブジェクトヘッダー、ですか。それが製品機能になるということは、かなり安定してきたということですね。

そうじゃ!JDK 24から安定性とパフォーマンスが確認されたみたいじゃな。OracleとAmazonでテスト済みで、AmazonではJDK 21とJDK 17にもバックポート版が使われてるらしいぞ。

それはすごいですね。具体的に、どんなメリットがあるんですか?

SPECjbb2015ベンチマークで、ヒープ使用量を0.22%削減、CPU時間を8%も削減できたらしいぞ!さらに、G1とParallelコレクターでガーベジコレクション回数を15%も削減できたみたいじゃ。

ガーベジコレクションの回数が減るのは大きいですね。並列JSONパーサーベンチマークでは、実行時間が10%削減されたというのも魅力的です。

じゃろじゃろ?今までは`-XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders`が必要だったけど、これからは`-XX:+UnlockExperimentalVMOptions`は不要になるのじゃ!

設定が簡単になるのは良いですね。でも、リスクはないんでしょうか?

将来の機能でオブジェクトヘッダーのビットがもっと必要になる可能性があるらしい。でも、すでに4ビット予約済みだし、必要なら圧縮されたクラスポインタとIDハッシュコードをさらに縮小できるみたいじゃから、大丈夫じゃろ。

なるほど、将来への備えも考えているんですね。JDK 25が対象とのことですが、今から楽しみです。

そうじゃな!しかし、オブジェクトヘッダーがコンパクトになった分、私の頭の中身もコンパクトに… なんてことはないぞ!

博士、それは元からでは…?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。