Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java 25 Overview 並行処理とGC周りの新機能

Java 25 Overview 並行処理とGC周りの新機能

Java 25で進化する並行処理とGCの最前線を解説。
Stable/Scoped Values、Structured Concurrency、Generational Shenandoah GCといった新機能の実用性と設計思想を解説しています。

More Decks by LINEヤフーTech (LY Corporation Tech)

Other Decks in Technology

Transcript

  1. 1 © LY Corporation 和田 隆道 Wada Takamichi LINEヤフー株式会社 コマースカンパニー

    SC統括本部 開発本部 #LINEギフトのサーバーサイドエンジニア #新卒3年目 JJUG CCC 2025 Springで発表しました Java, Go, Rustのメモリ管理手法の比較
  2. Today’s Agenda 2 © LY Corporation 1. Stable Values 2.

    Scoped Values 3. Structured Concurrency 4. Generational Shenandoah GC
  3. Today’s Agenda 4 © LY Corporation 1. Stable Values 2.

    Scoped Values 3. Structured Concurrency 4. Generational Shenandoah GC
  4. Stable Values: どういうモチベで何が嬉しいか © LY Corporation 8 こういう場合にStable Valuesが使える 初期化タイミングを遅延できる

    JVMによって定数扱いされるのでfinalと同等の最適化が効く 初期化処理がスレッドセーフに1度だけ実行される
  5. Today’s Agenda 10 © LY Corporation 1. Stable Values 2.

    Scoped Values 3. Structured Concurrency 4. Generational Shenandoah GC
  6. Today’s Agenda 14 © LY Corporation 1. Stable Values 2.

    Scoped Values 3. Structured Concurrency 4. Generational Shenandoah GC
  7. Structured Concurrency: Kotlin Coroutinesとの比較 © LY Corporation 19 並行処理を構造化できる点は同じだが、内部実装は大きく異なる ⚫

    並行処理を構造化して、複数のタスクをまとめて管理できる点は同じ ⚫ Java Virtual ThreadはJVMが提供する軽量なスレッドだが、Kotlin Coroutinesはコン パイル時に状態マシンを作ることで言語レベルで実現
  8. Today’s Agenda 20 © LY Corporation 1. Stable Values 2.

    Scoped Values 3. Structured Concurrency 4. Generational Shenandoah GC
  9. Today’s Agenda 21 © LY Corporation 1. Stable Values 2.

    Scoped Values 3. Structured Concurrency 4. Generational Shenandoah GC
  10. Generational Shenandoah GC : どういう機能か © LY Corporation 22 Shenandoah

    GCに世代別を追加 ⚫ Shenandoah GCはSTWが数ミリ秒程度でアプリケーションの実行にほぼ影響しないGC ⚫ 若い世代を優先的にGCすることで効率化する世代別を追加 ⚫ Java24でExperimentalとして入ってたものが安定版になった
  11. Generational Shenandoah GC :どういうモチベで何が嬉しいか © LY Corporation 24 ほとんどのオブジェクトは若いうちに死ぬという世代仮説を利用して、若い世代(多くが 死んでいるオブジェクト)に参照チェックを集中させる

    ヒープの解放をより効率的に行えるので、CPUの使用率が下がる、突発的なメモリ使 用量の向上に強い、メモリ利用率の改善 若い世代を優先的にGCする世代別の工夫により CPUとメモリの利用を効率化
  12. Generational Shenandoah GC :他のGCとの比較 © LY Corporation 25 GCアルゴリズムごとにそれぞれ強みが異なる ⚫

    Shenandoah GC ⚫ 世代別はJava25で安定版 ⚫ STWが数ミリ秒、小規模ヒープだと効率が良い ⚫ ZGC ⚫ 世代別はJava21で導入された ⚫ STWが数ミリ秒、超大規模ヒープに強い ⚫ G1GC ⚫ 世代別は元からやっている ⚫ STWは200ミリ秒目安、CPU負荷が小さい
  13. まとめ © LY Corporation 26 ⚫ Stable Values: 不変な値の初期化をスレッドセーフに遅延できる ⚫

    Scoped Values: 特定のスコープに不変な値を渡すことができる ⚫ Structured Concurrency: 並行処理するタスクを構造化できる ⚫ Generational Shenandoah GC: Shenandoah GCに世代別を追加