Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JEP 516: Ahead-of-Time Object Caching with AnyG...
Search
NTTドコモソリューションズ Java担当
March 24, 2026
Technology
9
0
Share
JEP 516: Ahead-of-Time Object Caching with AnyGC 概説
JJUGナイトセミナー「Java 26 リリース記念イベント」のライトニングトークで発表した JEP 516 に関する資料です。
NTTドコモソリューションズ Java担当
March 24, 2026
More Decks by NTTドコモソリューションズ Java担当
See All by NTTドコモソリューションズ Java担当
Java_プロセスのメモリ監視の落とし穴_NMT_で見抜けない_glibc_キャッシュ問題_.pdf
ntt_dsol_java
0
360
GraalVM Native Image トラブルシューティング機能の最新状況(2025年版)
ntt_dsol_java
0
250
GraalVM Native Image 解析方法の紹介
ntt_dsol_java
0
38
Native Memory Tracking を使用した Java プロセスメモリ消費内訳の紹介
ntt_dsol_java
0
33
Other Decks in Technology
See All in Technology
AI の技術 / AI technology
ks91
PRO
0
110
"スキルファースト"で作る、AIの自走環境
subroh0508
1
670
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.5k
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
200
なぜ、IAMロールのプリンシパルに*による部分マッチングが使えないのか? / 20260518-ssmjp-iam-role-principal
opelab
2
150
既存プロダクトQAから新規プロダクトQAへ
ryotakahashi
0
180
Personal knowledge bases using LLM
lycorptech_jp
PRO
0
130
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
2.3k
Pythonでベイズモデリング
soogie
0
170
GitHub Copilot CLI で考える複数エージェント設計
tomokusaba
0
150
Loadbalancing exporter internals
ymotongpoo
1
120
TSKaigi 2026 - 型プラグインシステムの実装に使われるテクニック
teamlab
PRO
1
130
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
170
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
Crafting Experiences
bethany
1
150
The SEO Collaboration Effect
kristinabergwall1
1
450
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
Facilitating Awesome Meetings
lara
57
6.9k
The browser strikes back
jonoalderson
0
1.1k
4 Signs Your Business is Dying
shpigford
187
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Embracing the Ebb and Flow
colly
88
5k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Transcript
JEP 516: Ahead-of-Time Object Caching with Any GC 2026-03-24 JJUG
ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026
自己紹介 坂本統(さかもとおさむ) NTT ドコモソリューションズの Java/OpenJDK エンジニア JJUG CCC 2026 Spring
でも AOT Cache についてお話させていただく予定 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 2
JEP 516 とは? AOT Cache が ZGC をサポートするようになった どの GC
方式でも AOT Cache が利用可能に 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 3
AOT Cache とは? Java App の起動時間を高速化する JDK の機能 トレーニング実行( -XX:AOTCacheOutput
)で以下をキャッシュ化: ロード&リンクしたクラス メソッドプロファイル情報 本番実行( -XX:AOTCache )でこれらのキャッシュを活用 → 起動時間が高速化 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 4
これまで JDK 24, 25 は Serial/Parallel/G1 のみサポート ZGC は未サポートだった JEP
483: Ahead-of-Time Class Loading & Linking ... Future work ZGC is not yet supported. We intend to address this limitation in future work. 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 5
これから JDK 26 から ZGC もサポート -XX:+UseZGC を指定してトレーニング&本番実行が可能に なお JDK
25 は利用不可のまま(バックポートされてなさそう) 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 6
なぜ ZGC をサポートできていなかった? Java オブジェクトのアドレス参照方式が GC ごとに異なるため キャッシュは Java ヒープを管理する
GC のオブジェクト参照方式に依存する Serial/Parallel/G1 :64 ビットアドレスに納まる形式でそれぞれ互換性あり ZGC :オブジェクトサイズが不定で独自のアドレス参照方式をもつ ZGC の参照方式ではキャッシュされたオブジェクトを Java ヒープに適切にマッピング できないためサポートできていなかった 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 7
どうやって ZGC をサポートした? GC 方式に依存しない方式を追加実装した アドレスに代わり論理インデックスを使用することで GC 方式に依存しなくなった オブジェクトをメモリに読み込むときはインデックスからアドレスへ変換する 〇
これまでのオブジェクト参照の格納方式(メモリアドレス方式) header: ... | value: 0x4002045278 | coder: ... | hash: ... | hashIsZero: ... 〇 論理インデックスを使用した格納方式(論理インデックス方式) header: ... | value: 5 | coder: ... | hash: ... | hashIsZero: ... 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 8
新しいオプション Serial/Parallel/G1GC でも論理インデックス方式を使用可能 それぞれの方式のパフォーマンスは状況や環境によって変わる (例えば AOT Cache のファイルシステムキャッシュの有無など) どちらにするかはトレーニング時に JVM
がヒューリスティックに決定する ただし -XX:+AOTStreamableObjects を指定すると論理インデックス方式を使用する なお -XX:+UnlockDiagnosticVMOptions とセットで指定が必要 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 9
試してみた Spring PetClinic で G1GC と ZGC の AOT Cache
性能を比較 ZGC でも G1GC と遜色なく Tomcat 起動時間を短縮できることを確認 Baseline AOT Cache 0.00 1.00 2.00 3.00 4.00 5.00 6.00 Spring PetClinic - Tomcat Startup Time(sec) OpenJDK 26 with ZGC app jvm Baseline AOT Cache AOT Cache(Streamable) 0.00 1.00 2.00 3.00 4.00 5.00 6.00 Spring PetClinic - Tomcat Startup Time(sec) OpenJDK 26 with G1GC app jvm 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 10
まとめ JDK 26 から AOT Cache が ZGC をサポート JDK
25 は AOT Cache と ZGC を併用できない ZGC サポートのため GC 方式に依存しない新しいキャッシュ方式が追加された 新旧のキャッシュ方式のどちらがパフォーマンスがよいかは状況による -XX:+AOTStreamableObjects で GC に依存しない方式を指定可能 2026-03-24 JJUG ナイトセミナー「Java 26 リリース記念イベント」 NTT DOCOMO SOLUTIONS, Inc. 2026 11