JDK 25: ハッシュコードの定数折り畳みによるStringのパフォーマンス向上

2025-05-02

JDK 25では、String::hashCode関数の定数折り畳みを可能にすることで、Stringクラスのパフォーマンスが大幅に向上しました。これにより、特に静的かつ不変のMapでStringをキーとして使用する場合、パフォーマンスが大幅に向上します。ネイティブ呼び出しのMethodHandleをStringキーでアクセスするシナリオでは、8倍以上の性能向上が見られました。この最適化は、内部フィールドString.hashに@Stableアノテーションを付けることで実現されます。これにより、JVMはハッシュコードをキャッシュして再利用できるようになり、ゼロ以外のハッシュコードに対して再計算を回避できます。ゼロのハッシュコードは最適化を妨げる可能性がありますが、今後の修正が期待されます。

続きを読む
開発

JVM起動の深堀り

2025-01-09

オラクルのJavaチームのメンバーであるBilly Korandoが、2025年1月9日にJVM起動プロセスに関する詳細な記事を発表しました。この記事はJVM初期化の内部メカニズムを詳細に分析し、Java開発者にとって貴重な洞察を提供します。詳細は動画の説明をご覧ください。

続きを読む
開発 起動

Valhalla:Javaの大規模リファクタリングが完了間近

2024-12-17

10年間にわたる取り組みを経て、Javaの大規模リファクタリングであるProject Valhallaが完了間近となっています。クラスとプリミティブのギャップを埋めることを目指し、Valhallaはクラスのコーディングの利便性とプリミティブのパフォーマンスを兼ね備えた値クラスを導入し、フラットでコンパクトなメモリレイアウトを実現します。Devoxx 2024で、Java言語アーキテクトのBrian Goetzは包括的なアップデートを提供し、値クラス、null制約付き型、強化された確定代入分析、厳密な初期化などの主要機能を強調しました。

続きを読む
開発 値クラス