SlideShare uma empresa Scribd logo
1 de 64
© 2023 NTT DATA Corporation
より速く より運用しやすく 進化し続けるJVM
Java Developers Summit Online 2023
NTTデータ 阪田 浩一
2023年2月28日
#javasumi23
© 2023 NTT DATA Corporation 2
自己紹介
• Javaチャンピオン
• Oracle ACE Pro (Java分野)
• 株式会社NTTデータ 所属
• JVMがとにかく好き
• OpenJDKコミッタ
• 💡 2023年2月22日にコミッタになりました!
Koichi Sakata
阪田 浩一
jyukutyo
© 2023 NTT DATA Corporation 3
このセッションのゴール
 参加された方がJVMのここ数年の進化と
今後の方向性について概要をつかめること
 注意事項
• 説明のため厳密には正確でない表現をすることがあります
• 聴講者として中級者(JVM GC JITコンパイラの大まかな機能が
わかるくらい)を想定しています
- JVMに詳しい人向けの内容ではありません
- 個々の機能についての技術的詳細は今回の範囲外です
© 2023 NTT DATA Corporation 4
そもそもJVMの進化って?
© 2023 NTT DATA Corporation 5
JVMの進化??
JVMって動作は安定しているし
実行速度が速くなる以外に進化があるの??
 より動作が速くなる
• 実行におけるどの部分を速くするのか
- 改善なのかまったく新しい仕組みなのか
 より様々なユースケースや環境で実用に耐えられる
 よりトラブルに対処しやすくなる
© 2023 NTT DATA Corporation 6
Javaは速いのか??
 観点を変えれば速いとも遅いとも言える
 何と比較して速い遅いを決めるか
• 比較すれば遅いが要件に対して十分に速いという場合もある
© 2023 NTT DATA Corporation 7
クラウド環境でJavaは速いのか??
 クラウドで何をするのかにもよる
• IaaSやPaaS上 利用に波がない 今までによくあったタイプ の
Webアプリケーション
• コンテナ利用 利用にスパイクがある Webアプリケーション
• FaaS イベント駆動 アプリケーション
• FaaSだと起動時間の長さ
• コンテナで台数を増やすときに十分なパフォーマンスが
出るまでにかかる時間
が気になる
© 2023 NTT DATA Corporation 8
観点が異なる時間
 起動時間
• JVMが起動するまでの時間
• アプリケーションサーバやサーブレットコンテナが起動するまでの時間
 ウォームアップ時間
• 十分なパフォーマンスが出るまでの時間
 実行時間
• ある処理を実行して完了させるまでの時間
© 2023 NTT DATA Corporation 9
観点が異なる時間
起動時間 ウォームアップ時間
javaコマンド実行 アプリケーション起動 良好なパフォーマンス
時間あたりの処理数
実行時間短縮により処理数は増加
古いJava 新しいJava
© 2023 NTT DATA Corporation 10
起動時間短縮に対する今までの取り組み
 これまでも短縮に取り組んできた
• CDS AppCDS ダイナミックCDS
• 多くの細かな改善
 JVMをゼロから起動する時間に対する改善の取り組みが多い
• メリットはあるが FaaSだとまだ長い
© 2023 NTT DATA Corporation 11
起動時間短縮に対する新しい観点での取り組み
 JVM起動において起動時間やウォームアップ時間は
一定の時間がかかる
 ウォームアップ済みのアプリケーションを保存し
それを再開させる機能があれば
JVMとアプリの起動時間を省けるのでは?
• Project CRaC
 JVMを使わず JavaプログラムをC言語のように
実行ファイルにすれば JVMの起動時間や
ウォームアップ時間を省けるのでは?
• GraalVM ネイティブイメージ機能
© 2023 NTT DATA Corporation 12
起動時間 ウォームアップ時間の短縮
 Project CRaC[1]
• Coordinated Restore at Checkpoint
- 起動とウォームアップが完了したJVMとアプリケーションの
イメージを保存する(チェックポイント)
- イメージを復元しればウォームアップ済みのアプリケーションが利用可能となる
(リストア)
- 参考: Linux向けのチェックポイント/リストア機能 CRIU
• OpenJDKのメインラインには未反映
• クラウドベンダの中には先行して独自に取り込みFaaSで使用している
ところもある
[1] https://openjdk.org/projects/crac/ ・ https://github.com/CRaC/docs
© 2023 NTT DATA Corporation 13
CRaCの利用
 -XX:CRaCCheckpointTo=[イメージ保存ディレクトリ]
を付与してアプリケーションを起動する
 APIもしくはjcmdでチェックポイントを生成する
• ディレクトリにイメージファイルが出力される
 -XX:CRaCRestoreFrom=[上記ディレクトリ]
を付与してjavaコマンドを実行する
 アーリーアクセスビルドがある[1]
[1] https://github.com/CRaC/openjdk-builds/releases
© 2023 NTT DATA Corporation 14
CRaCの注意点
 ファイルやソケットはチェックポイント生成前に
アプリケーション側で閉じなければならない
• 閉じずにチェックポイントを生成しようとすると例外が発生する
• 同様にリストアで再びそれらを開く必要がある
 CRaCが提供するインタフェースを実装したクラスを
CRaCに登録すればチェックポイント前 リストア後の
タイミングで適切なメソッドを呼び出してくれる
• jdk.crac.Resourceインタフェース
• beforeCheckpoint() afterRestore()メソッド
© 2023 NTT DATA Corporation 15
CRaCデモ
 DBを使っているとコネクションプールにある
コネクションの破棄と生成のコードが必要になる
 TomcatやAPサーバも停止と起動が必要になる
 今回はCRaCのSpring Bootサンプルアプリ[1]を実行
[1] https://github.com/CRaC/example-spring-boot
© 2023 NTT DATA Corporation 16
CRaCデモ
© 2023 NTT DATA Corporation 17
起動時間 ウォームアップ時間の短縮
 GraalVM ネイティブイメージ
• Javaバイトコードから実行ファイルを生成する
- 実行ファイルは機械語であり JVMを使わず起動するため速い
- この仕組みからウォームアップという概念はない
• GraalVMは別のプロダクトである
- JDKディストリビューションとはサポートも異なる
© 2023 NTT DATA Corporation 18
起動時間 ウォームアップ時間の短縮
 Project Leyden[1]
• ネイティブイメージ生成と同様のことをOpenJDKで実現する
• 2022年5月 始動
 GraalVM CE[2]をOpenJDKに寄贈すると発表があった
• ネイティブイメージ機能も寄贈対象であり Leydenに影響あり
[1] https://openjdk.org/projects/leyden/
[2] GraalVM Community Editionのこと 他にEnterprise Editionがある
© 2023 NTT DATA Corporation 19
GraalVMとOpenJDKの関係
 GraalVMはOpenJDKをベースにして開発したもの
• JITコンパイラを新規に開発
JVM
Compiler Interface
C2
C1
HotSpot VM
C++
GraalVM
Compiler
Interface
GraalVM
JITコンパイラ
C1
HotSpot VM
JVMCI
Java
© 2023 NTT DATA Corporation 20
GraalVMとOpenJDKの関係
 GraalVMはOpenJDKをベースにして開発したもの
• JITコンパイラを新規に開発
• バイトコードを機械語にする仕組みを活用し
アプリ実行中でなくてもバイトコードを機械語にできる機能も開発
- ネイティブコード生成の中核(AOTコンパイル 後述)
 JITコンパイラ部分は一時期OpenJDKに含まれていた
• JEP 317: Experimental Java-Based JIT Compiler (Java 10)
• JEP 410: Remove the Experimental AOT and JIT Compiler (Java 17)
© 2023 NTT DATA Corporation 21
JITコンパイル
 JITコンパイラはアプリケーション実行中に
Javaバイトコードを機械語にコンパイル[1]する
Javaバイトコード プロファイル情報
機械語
JITコンパイラによるJITコンパイル
[1] javacでのコンパイルとはまったく別のものです
© 2023 NTT DATA Corporation 22
GraalVMでのAOTコンパイル
 ネイティブイメージ生成ではアプリケーション実行前に
Javaバイトコードを機械語にコンパイルする
Javaバイトコード プロファイル情報
機械語
GraalVMによるAOTコンパイル
© 2023 NTT DATA Corporation 23
GraalVMの寄贈
 JITコンパイラとネイティブイメージ生成機能の一部を寄贈
 Project Galahad[1]
• GraalVMの技術をOpenJDKに適用する
• 2022年12月 始動
• 将来的にはGraalVMもこのソースをベースとする予定
ガラハドってアーサー王伝説に出てきた
聖杯を見つけた騎士だよね
Graal(仏) = Holy Grail(英) = 聖杯(日) つながりだ
[1] プロジェクトページはまだないようです
© 2023 NTT DATA Corporation 24
実行速度向上
 Javaのリリースごとに実行パフォーマンスは向上している
• 同じアプリケーションでもより新しいバージョンのJavaを使うだけで
実行速度が向上する
 参考となるベンチマーク測定[1]
• Java 8 -> 11 で4%強向上
- https://www.optaplanner.org/blog/2019/01/17/HowMuchFasterIsJava11.html
• Java 11 -> 17 で8%強向上
- https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html
 障害対応も新しいものの方がしやすい
• ランタイムを新しいバージョンにするだけでも恩恵がある
[1] それぞれ別のベンチマークで測定しています この結果が全ユースケースに必ず当てはまるわけではありません
© 2023 NTT DATA Corporation 25
ガベージコレクタの改善
 既存GC(G1 パラレル シリアル)は継続的に改善
• 実行パフォーマンス向上
• メモリ使用量削減
 ZGC
• ドラフト版JEP: 世代別ZGC[1]
- アーリーアクセスビルド[2]も出ている
- ZGCが適合する領域が広がる
[1] https://openjdk.org/jeps/8272979
[2] https://jdk.java.net/genzgc/
© 2023 NTT DATA Corporation 26
メモリ上のオブジェクトヘッダ領域削減
 Project Lilliput[1]
• オブジェクトヘッダを96bit(128bit[2])からまず64bitに削減する
- ヒープ使用量削減、GC中の処理量削減、キャッシュの局所性向上
- 結果としてメモリだけでなくCPU使用量も削減できる
• ヘッダーのレイアウトをより柔軟にする
[1] https://wiki.openjdk.org/display/lilliput
[2] Compressed Class Pointersを無効にした場合
© 2023 NTT DATA Corporation 27
Compressed OopsとCompressed Class Pointers
 OopsはJavaヒープ内のオブジェクトへのポインタ
 Class Pointersはメタスペース内のクラスメタデータへの
ポインタ
© 2023 NTT DATA Corporation 28
JVMの運用面での進化
© 2023 NTT DATA Corporation 29
JVMの進化
 速度
• 起動速度
• 実行速度
 運用
• プラットフォーム
• ツール
© 2023 NTT DATA Corporation 30
プラットフォームの追加
 8年前にaarch64(Arm)を対応プラットフォームに追加
 Java 19でRISC-Vを追加
プラットフォームが増えたからって
何かよいことがあるの??
 たとえばクラウド利用時に費用が安い方を選べる
• 同程度の性能でも費用面に違いがある
 同程度の性能でもサーバの消費電力量に違いがある
• 電気料金削減だけでなくCO2排出量も削減
- データセンターのゼロエミッション化なども話題に
© 2023 NTT DATA Corporation 31
ツールの改善
 jcmd
 JDK Flight Recorder(JFR)
 HotSpot Disassembler(HSDIS)
 Ideal Graph Visualizer(IGV)
© 2023 NTT DATA Corporation 32
ツールの統廃合
 Java 8: 44個
 Java 19: 29個
© 2023 NTT DATA Corporation 33
jcmd
 JVMから情報を取得できる
 JVMの設定を変更できる
 対象はローカルプロセスのみ
 jcmd <pid|main_class> コマンド ...
• pidはプロセスIDのこと
© 2023 NTT DATA Corporation 34
jcmdの実行例
 例1) スレッドダンプ取得
• jcmd <pid> Thread.print
 例2) フライトレコード開始
• jcmd <pid> JFR.start duration=1m filename=app.jfr
 例3) ログ設定追加
• jcmd <pid> VM.log output="sample.log"
output_options="filecount=3"
© 2023 NTT DATA Corporation 35
jcmdでのコマンドのドメイン
 jcmd <pid> コマンド (コマンドはドメイン.操作という形式)
ドメイン 内容
VM JVMの実行情報取得 ログ設定など
Compiler JITコンパイラ関連
GC ガベージコレクション関連
Thread 現状スレッドダンプのみ
JVMTI JVM Tool Interface関連 エージェントのロードなど
JFR フライトレコード関連
ManagementAgent JMXエージェント関連
※ コマンドとは別個の独立した命令としてPerfcounter.printもある
© 2023 NTT DATA Corporation 36
VMドメイン
 JVM関連の情報取得 設定変更
VM.classloader_stats VM.print_touched_methods
VM.class_hierarchy VM.set_flag
VM.command_line VM.stringtable
VM.dynlibs VM.symboltable
VM.info VM.systemdictionary
VM.log VM.system_properties
VM.flags VM.uptime
VM.native_memory VM.version
© 2023 NTT DATA Corporation 37
Javaのバージョンとjcmd
 バージョンアップとともにコマンドの数が増えている
© 2023 NTT DATA Corporation 38
jcmd (Java 8)
27個
© 2023 NTT DATA Corporation 39
jcmd (Java 19)
51個
© 2023 NTT DATA Corporation 40
使わなくなったコマンド
 jcmdで同様のことができるコマンド
 jstack
 jinfo
• jcmd VMドメインにあるコマンドたちを使用
 jmap
• jcmdで以下のようにできる
• 例1) ヒープダンプ: GC.heap_dump <filename>
• 例2) ヒープヒストグラム: GC.class_histogram
© 2023 NTT DATA Corporation 41
jcmdとJDK Flight Recorder
 Project Loomの仮想スレッドに対応
© 2023 NTT DATA Corporation 42
jfrコマンド
 フライトレコードの分析
• JDK Mission Control (JMC)
• jfrコマンド
© 2023 NTT DATA Corporation 43
jfrコマンド
 jfr [サブコマンド] ... jfrファイル
サブコマンド 内容
summary フライトレコードの統計を出力する
print フライトレコードのコンテンツを出力する
assemble 複数のjfrファイルを1つにまとめる
disassemble jfrファイルを複数に分割する
metadata
メタデータとしてイベントそのものに関する情報を
出力する
© 2023 NTT DATA Corporation 44
jfrコマンド実行デモ
© 2023 NTT DATA Corporation 45
HSDIS
 ディスアセンブラ 逆アセンブラ
 JITコンパイラが生成した機械語をアセンブリ言語に変換する
 OpenJDKに含まれるツールの1つ
© 2023 NTT DATA Corporation 46
HSDIS
 機械語は0と1の羅列のため通常読めない
 HSDISで機械語をアセンブリ言語に
ディスアセンブルすることで読めるレベルになる
Javaバイトコード
機械語
HSDISでディスアセンブル
アセンブリ言語
© 2023 NTT DATA Corporation 47
HSDIS
 JITコンパイラが生成したコードを確認できる
• 特定のメソッドがコンパイルされているかを確認したい場合がある
- 特定箇所にパフォーマンスに問題があるとき
 想定するCPUの命令を使っているかを確認する
• UseAVXなど特別な実行時オプションを指定したなど
© 2023 NTT DATA Corporation 48
HSDIS
 以前はOpenJDKと別の方法でビルドしたが
OpenJDK本体と同じようにビルドできるようになった
 ディスアセンブルのバックエンドにGNU Binutilsだけで
なくLLVMとCapstoneも使えるようになった
• LLVM Compiler Infrastructure
• The Ultimate Disassembly Framework – Capstone
© 2023 NTT DATA Corporation 49
アセンブリ出力のデモ
© 2023 NTT DATA Corporation 50
IGV
 JITコンパイラの内部動作を可視化するツール
 Java製
 OpenJDKのリポジトリに含まれる
 Mavenでビルドする
© 2023 NTT DATA Corporation 51
JITコンパイルのプロセス
Java
バイトコード
IR (中間表現) 機械語
最適化を適用し、
IRを変更する
① ③
②
© 2023 NTT DATA Corporation 52
IR
 コードをデータ構造で表現する
• JVMではグラフで表現する
- プログラムの依存をグラフにする
- IRグラフ
© 2023 NTT DATA Corporation 53
例) x + yをグラフにする
© 2023 NTT DATA Corporation 54
例) getX() + getY()をグラフにする
© 2023 NTT DATA Corporation 55
メソッドの呼び出し順序を考慮したグラフ
黄色: 実行順序
緑色: データフロー
© 2023 NTT DATA Corporation 56
JITコンパイラのアーキテクチャ
フロントエンド バックエンド
© 2023 NTT DATA Corporation 57
フロントエンド
 ハードウェアからは独立
 バイトコードからIRを生成する
 IRに最適化をほどこす
 このIRはHIRと呼ぶ
• High-Level IR: 高水準中間表現
© 2023 NTT DATA Corporation 58
バックエンド
 ハードウェアに依存
 レジスタを割り当てる
 LIRから機械語を生成する
• Low-Level IR: 低水準中間言語
© 2023 NTT DATA Corporation 59
JITコンパイラのアーキテクチャ
59
クラス
ロード
バイト
コード HIR
HIR LIR
LIR
機械語
コード
フロントエンド バックエンド
HIR生成
最適化 レジスタ割当
コード生成
© 2023 NTT DATA Corporation 60
JITコンパイルによる最適化とは
 IRグラフに対するパターンマッチ
• グラフのノードを置換する
Aノード Bノード
Cノード
Dノード Dノード
Eノード
最適化パターンにマッチ!
※ 極度に簡略化した例です
© 2023 NTT DATA Corporation 61
JVMにグラフを出力させる
 OpenJDKのデバッグビルド版
• リリース版では以下のオプションは使用できない
 -XX:PrintIdealGraphLevel=[0-4]
-XX:PrintIdealGraphFile=filename
 出力ファイルをIGVで開く
© 2023 NTT DATA Corporation 62
IGVデモ
© 2023 NTT DATA Corporation 63
まとめ
 JVMはJavaのバージョンアップとともに
より速く より運用しやすくなっている
• 実行環境は選び得るもっとも新しいJavaバージョンにしよう
 さまざまなプロジェクトが進行中で
細かな改善に加え 新たな観点の機能も加わっていく
© 2023 NTT DATA Corporation 64
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Mais conteúdo relacionado

Mais procurados

Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてShigeru Tatsuta
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までMasahito Zembutsu
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) Hironobu Isoda
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング佑哉 廣岡
 

Mais procurados (20)

Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
Metaspace
MetaspaceMetaspace
Metaspace
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
KafkaとPulsar
KafkaとPulsarKafkaとPulsar
KafkaとPulsar
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
 

Semelhante a より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)

JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)NTT DATA Technology & Innovation
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~Shinji Takao
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf勇 黒沢
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)NTT DATA Technology & Innovation
 
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)NTT DATA Technology & Innovation
 
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会samemoon
 
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...NTT DATA Technology & Innovation
 
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native ImageIntroduction to GraalVM and Native Image
Introduction to GraalVM and Native ImageKoichi Sakata
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 

Semelhante a より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料) (20)

JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Let's play with Goldfish
Let's play with GoldfishLet's play with Goldfish
Let's play with Goldfish
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
 
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
 
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
GPU Container as a Serviceを実現するための最新OSS徹底比較 - OpenStack最新情報セミナー 2017年7月
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較
 
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
 
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native ImageIntroduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 

Mais de NTT DATA Technology & Innovation

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Mais de NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Último

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Último (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)

  • 1. © 2023 NTT DATA Corporation より速く より運用しやすく 進化し続けるJVM Java Developers Summit Online 2023 NTTデータ 阪田 浩一 2023年2月28日 #javasumi23
  • 2. © 2023 NTT DATA Corporation 2 自己紹介 • Javaチャンピオン • Oracle ACE Pro (Java分野) • 株式会社NTTデータ 所属 • JVMがとにかく好き • OpenJDKコミッタ • 💡 2023年2月22日にコミッタになりました! Koichi Sakata 阪田 浩一 jyukutyo
  • 3. © 2023 NTT DATA Corporation 3 このセッションのゴール  参加された方がJVMのここ数年の進化と 今後の方向性について概要をつかめること  注意事項 • 説明のため厳密には正確でない表現をすることがあります • 聴講者として中級者(JVM GC JITコンパイラの大まかな機能が わかるくらい)を想定しています - JVMに詳しい人向けの内容ではありません - 個々の機能についての技術的詳細は今回の範囲外です
  • 4. © 2023 NTT DATA Corporation 4 そもそもJVMの進化って?
  • 5. © 2023 NTT DATA Corporation 5 JVMの進化?? JVMって動作は安定しているし 実行速度が速くなる以外に進化があるの??  より動作が速くなる • 実行におけるどの部分を速くするのか - 改善なのかまったく新しい仕組みなのか  より様々なユースケースや環境で実用に耐えられる  よりトラブルに対処しやすくなる
  • 6. © 2023 NTT DATA Corporation 6 Javaは速いのか??  観点を変えれば速いとも遅いとも言える  何と比較して速い遅いを決めるか • 比較すれば遅いが要件に対して十分に速いという場合もある
  • 7. © 2023 NTT DATA Corporation 7 クラウド環境でJavaは速いのか??  クラウドで何をするのかにもよる • IaaSやPaaS上 利用に波がない 今までによくあったタイプ の Webアプリケーション • コンテナ利用 利用にスパイクがある Webアプリケーション • FaaS イベント駆動 アプリケーション • FaaSだと起動時間の長さ • コンテナで台数を増やすときに十分なパフォーマンスが 出るまでにかかる時間 が気になる
  • 8. © 2023 NTT DATA Corporation 8 観点が異なる時間  起動時間 • JVMが起動するまでの時間 • アプリケーションサーバやサーブレットコンテナが起動するまでの時間  ウォームアップ時間 • 十分なパフォーマンスが出るまでの時間  実行時間 • ある処理を実行して完了させるまでの時間
  • 9. © 2023 NTT DATA Corporation 9 観点が異なる時間 起動時間 ウォームアップ時間 javaコマンド実行 アプリケーション起動 良好なパフォーマンス 時間あたりの処理数 実行時間短縮により処理数は増加 古いJava 新しいJava
  • 10. © 2023 NTT DATA Corporation 10 起動時間短縮に対する今までの取り組み  これまでも短縮に取り組んできた • CDS AppCDS ダイナミックCDS • 多くの細かな改善  JVMをゼロから起動する時間に対する改善の取り組みが多い • メリットはあるが FaaSだとまだ長い
  • 11. © 2023 NTT DATA Corporation 11 起動時間短縮に対する新しい観点での取り組み  JVM起動において起動時間やウォームアップ時間は 一定の時間がかかる  ウォームアップ済みのアプリケーションを保存し それを再開させる機能があれば JVMとアプリの起動時間を省けるのでは? • Project CRaC  JVMを使わず JavaプログラムをC言語のように 実行ファイルにすれば JVMの起動時間や ウォームアップ時間を省けるのでは? • GraalVM ネイティブイメージ機能
  • 12. © 2023 NTT DATA Corporation 12 起動時間 ウォームアップ時間の短縮  Project CRaC[1] • Coordinated Restore at Checkpoint - 起動とウォームアップが完了したJVMとアプリケーションの イメージを保存する(チェックポイント) - イメージを復元しればウォームアップ済みのアプリケーションが利用可能となる (リストア) - 参考: Linux向けのチェックポイント/リストア機能 CRIU • OpenJDKのメインラインには未反映 • クラウドベンダの中には先行して独自に取り込みFaaSで使用している ところもある [1] https://openjdk.org/projects/crac/ ・ https://github.com/CRaC/docs
  • 13. © 2023 NTT DATA Corporation 13 CRaCの利用  -XX:CRaCCheckpointTo=[イメージ保存ディレクトリ] を付与してアプリケーションを起動する  APIもしくはjcmdでチェックポイントを生成する • ディレクトリにイメージファイルが出力される  -XX:CRaCRestoreFrom=[上記ディレクトリ] を付与してjavaコマンドを実行する  アーリーアクセスビルドがある[1] [1] https://github.com/CRaC/openjdk-builds/releases
  • 14. © 2023 NTT DATA Corporation 14 CRaCの注意点  ファイルやソケットはチェックポイント生成前に アプリケーション側で閉じなければならない • 閉じずにチェックポイントを生成しようとすると例外が発生する • 同様にリストアで再びそれらを開く必要がある  CRaCが提供するインタフェースを実装したクラスを CRaCに登録すればチェックポイント前 リストア後の タイミングで適切なメソッドを呼び出してくれる • jdk.crac.Resourceインタフェース • beforeCheckpoint() afterRestore()メソッド
  • 15. © 2023 NTT DATA Corporation 15 CRaCデモ  DBを使っているとコネクションプールにある コネクションの破棄と生成のコードが必要になる  TomcatやAPサーバも停止と起動が必要になる  今回はCRaCのSpring Bootサンプルアプリ[1]を実行 [1] https://github.com/CRaC/example-spring-boot
  • 16. © 2023 NTT DATA Corporation 16 CRaCデモ
  • 17. © 2023 NTT DATA Corporation 17 起動時間 ウォームアップ時間の短縮  GraalVM ネイティブイメージ • Javaバイトコードから実行ファイルを生成する - 実行ファイルは機械語であり JVMを使わず起動するため速い - この仕組みからウォームアップという概念はない • GraalVMは別のプロダクトである - JDKディストリビューションとはサポートも異なる
  • 18. © 2023 NTT DATA Corporation 18 起動時間 ウォームアップ時間の短縮  Project Leyden[1] • ネイティブイメージ生成と同様のことをOpenJDKで実現する • 2022年5月 始動  GraalVM CE[2]をOpenJDKに寄贈すると発表があった • ネイティブイメージ機能も寄贈対象であり Leydenに影響あり [1] https://openjdk.org/projects/leyden/ [2] GraalVM Community Editionのこと 他にEnterprise Editionがある
  • 19. © 2023 NTT DATA Corporation 19 GraalVMとOpenJDKの関係  GraalVMはOpenJDKをベースにして開発したもの • JITコンパイラを新規に開発 JVM Compiler Interface C2 C1 HotSpot VM C++ GraalVM Compiler Interface GraalVM JITコンパイラ C1 HotSpot VM JVMCI Java
  • 20. © 2023 NTT DATA Corporation 20 GraalVMとOpenJDKの関係  GraalVMはOpenJDKをベースにして開発したもの • JITコンパイラを新規に開発 • バイトコードを機械語にする仕組みを活用し アプリ実行中でなくてもバイトコードを機械語にできる機能も開発 - ネイティブコード生成の中核(AOTコンパイル 後述)  JITコンパイラ部分は一時期OpenJDKに含まれていた • JEP 317: Experimental Java-Based JIT Compiler (Java 10) • JEP 410: Remove the Experimental AOT and JIT Compiler (Java 17)
  • 21. © 2023 NTT DATA Corporation 21 JITコンパイル  JITコンパイラはアプリケーション実行中に Javaバイトコードを機械語にコンパイル[1]する Javaバイトコード プロファイル情報 機械語 JITコンパイラによるJITコンパイル [1] javacでのコンパイルとはまったく別のものです
  • 22. © 2023 NTT DATA Corporation 22 GraalVMでのAOTコンパイル  ネイティブイメージ生成ではアプリケーション実行前に Javaバイトコードを機械語にコンパイルする Javaバイトコード プロファイル情報 機械語 GraalVMによるAOTコンパイル
  • 23. © 2023 NTT DATA Corporation 23 GraalVMの寄贈  JITコンパイラとネイティブイメージ生成機能の一部を寄贈  Project Galahad[1] • GraalVMの技術をOpenJDKに適用する • 2022年12月 始動 • 将来的にはGraalVMもこのソースをベースとする予定 ガラハドってアーサー王伝説に出てきた 聖杯を見つけた騎士だよね Graal(仏) = Holy Grail(英) = 聖杯(日) つながりだ [1] プロジェクトページはまだないようです
  • 24. © 2023 NTT DATA Corporation 24 実行速度向上  Javaのリリースごとに実行パフォーマンスは向上している • 同じアプリケーションでもより新しいバージョンのJavaを使うだけで 実行速度が向上する  参考となるベンチマーク測定[1] • Java 8 -> 11 で4%強向上 - https://www.optaplanner.org/blog/2019/01/17/HowMuchFasterIsJava11.html • Java 11 -> 17 で8%強向上 - https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html  障害対応も新しいものの方がしやすい • ランタイムを新しいバージョンにするだけでも恩恵がある [1] それぞれ別のベンチマークで測定しています この結果が全ユースケースに必ず当てはまるわけではありません
  • 25. © 2023 NTT DATA Corporation 25 ガベージコレクタの改善  既存GC(G1 パラレル シリアル)は継続的に改善 • 実行パフォーマンス向上 • メモリ使用量削減  ZGC • ドラフト版JEP: 世代別ZGC[1] - アーリーアクセスビルド[2]も出ている - ZGCが適合する領域が広がる [1] https://openjdk.org/jeps/8272979 [2] https://jdk.java.net/genzgc/
  • 26. © 2023 NTT DATA Corporation 26 メモリ上のオブジェクトヘッダ領域削減  Project Lilliput[1] • オブジェクトヘッダを96bit(128bit[2])からまず64bitに削減する - ヒープ使用量削減、GC中の処理量削減、キャッシュの局所性向上 - 結果としてメモリだけでなくCPU使用量も削減できる • ヘッダーのレイアウトをより柔軟にする [1] https://wiki.openjdk.org/display/lilliput [2] Compressed Class Pointersを無効にした場合
  • 27. © 2023 NTT DATA Corporation 27 Compressed OopsとCompressed Class Pointers  OopsはJavaヒープ内のオブジェクトへのポインタ  Class Pointersはメタスペース内のクラスメタデータへの ポインタ
  • 28. © 2023 NTT DATA Corporation 28 JVMの運用面での進化
  • 29. © 2023 NTT DATA Corporation 29 JVMの進化  速度 • 起動速度 • 実行速度  運用 • プラットフォーム • ツール
  • 30. © 2023 NTT DATA Corporation 30 プラットフォームの追加  8年前にaarch64(Arm)を対応プラットフォームに追加  Java 19でRISC-Vを追加 プラットフォームが増えたからって 何かよいことがあるの??  たとえばクラウド利用時に費用が安い方を選べる • 同程度の性能でも費用面に違いがある  同程度の性能でもサーバの消費電力量に違いがある • 電気料金削減だけでなくCO2排出量も削減 - データセンターのゼロエミッション化なども話題に
  • 31. © 2023 NTT DATA Corporation 31 ツールの改善  jcmd  JDK Flight Recorder(JFR)  HotSpot Disassembler(HSDIS)  Ideal Graph Visualizer(IGV)
  • 32. © 2023 NTT DATA Corporation 32 ツールの統廃合  Java 8: 44個  Java 19: 29個
  • 33. © 2023 NTT DATA Corporation 33 jcmd  JVMから情報を取得できる  JVMの設定を変更できる  対象はローカルプロセスのみ  jcmd <pid|main_class> コマンド ... • pidはプロセスIDのこと
  • 34. © 2023 NTT DATA Corporation 34 jcmdの実行例  例1) スレッドダンプ取得 • jcmd <pid> Thread.print  例2) フライトレコード開始 • jcmd <pid> JFR.start duration=1m filename=app.jfr  例3) ログ設定追加 • jcmd <pid> VM.log output="sample.log" output_options="filecount=3"
  • 35. © 2023 NTT DATA Corporation 35 jcmdでのコマンドのドメイン  jcmd <pid> コマンド (コマンドはドメイン.操作という形式) ドメイン 内容 VM JVMの実行情報取得 ログ設定など Compiler JITコンパイラ関連 GC ガベージコレクション関連 Thread 現状スレッドダンプのみ JVMTI JVM Tool Interface関連 エージェントのロードなど JFR フライトレコード関連 ManagementAgent JMXエージェント関連 ※ コマンドとは別個の独立した命令としてPerfcounter.printもある
  • 36. © 2023 NTT DATA Corporation 36 VMドメイン  JVM関連の情報取得 設定変更 VM.classloader_stats VM.print_touched_methods VM.class_hierarchy VM.set_flag VM.command_line VM.stringtable VM.dynlibs VM.symboltable VM.info VM.systemdictionary VM.log VM.system_properties VM.flags VM.uptime VM.native_memory VM.version
  • 37. © 2023 NTT DATA Corporation 37 Javaのバージョンとjcmd  バージョンアップとともにコマンドの数が増えている
  • 38. © 2023 NTT DATA Corporation 38 jcmd (Java 8) 27個
  • 39. © 2023 NTT DATA Corporation 39 jcmd (Java 19) 51個
  • 40. © 2023 NTT DATA Corporation 40 使わなくなったコマンド  jcmdで同様のことができるコマンド  jstack  jinfo • jcmd VMドメインにあるコマンドたちを使用  jmap • jcmdで以下のようにできる • 例1) ヒープダンプ: GC.heap_dump <filename> • 例2) ヒープヒストグラム: GC.class_histogram
  • 41. © 2023 NTT DATA Corporation 41 jcmdとJDK Flight Recorder  Project Loomの仮想スレッドに対応
  • 42. © 2023 NTT DATA Corporation 42 jfrコマンド  フライトレコードの分析 • JDK Mission Control (JMC) • jfrコマンド
  • 43. © 2023 NTT DATA Corporation 43 jfrコマンド  jfr [サブコマンド] ... jfrファイル サブコマンド 内容 summary フライトレコードの統計を出力する print フライトレコードのコンテンツを出力する assemble 複数のjfrファイルを1つにまとめる disassemble jfrファイルを複数に分割する metadata メタデータとしてイベントそのものに関する情報を 出力する
  • 44. © 2023 NTT DATA Corporation 44 jfrコマンド実行デモ
  • 45. © 2023 NTT DATA Corporation 45 HSDIS  ディスアセンブラ 逆アセンブラ  JITコンパイラが生成した機械語をアセンブリ言語に変換する  OpenJDKに含まれるツールの1つ
  • 46. © 2023 NTT DATA Corporation 46 HSDIS  機械語は0と1の羅列のため通常読めない  HSDISで機械語をアセンブリ言語に ディスアセンブルすることで読めるレベルになる Javaバイトコード 機械語 HSDISでディスアセンブル アセンブリ言語
  • 47. © 2023 NTT DATA Corporation 47 HSDIS  JITコンパイラが生成したコードを確認できる • 特定のメソッドがコンパイルされているかを確認したい場合がある - 特定箇所にパフォーマンスに問題があるとき  想定するCPUの命令を使っているかを確認する • UseAVXなど特別な実行時オプションを指定したなど
  • 48. © 2023 NTT DATA Corporation 48 HSDIS  以前はOpenJDKと別の方法でビルドしたが OpenJDK本体と同じようにビルドできるようになった  ディスアセンブルのバックエンドにGNU Binutilsだけで なくLLVMとCapstoneも使えるようになった • LLVM Compiler Infrastructure • The Ultimate Disassembly Framework – Capstone
  • 49. © 2023 NTT DATA Corporation 49 アセンブリ出力のデモ
  • 50. © 2023 NTT DATA Corporation 50 IGV  JITコンパイラの内部動作を可視化するツール  Java製  OpenJDKのリポジトリに含まれる  Mavenでビルドする
  • 51. © 2023 NTT DATA Corporation 51 JITコンパイルのプロセス Java バイトコード IR (中間表現) 機械語 最適化を適用し、 IRを変更する ① ③ ②
  • 52. © 2023 NTT DATA Corporation 52 IR  コードをデータ構造で表現する • JVMではグラフで表現する - プログラムの依存をグラフにする - IRグラフ
  • 53. © 2023 NTT DATA Corporation 53 例) x + yをグラフにする
  • 54. © 2023 NTT DATA Corporation 54 例) getX() + getY()をグラフにする
  • 55. © 2023 NTT DATA Corporation 55 メソッドの呼び出し順序を考慮したグラフ 黄色: 実行順序 緑色: データフロー
  • 56. © 2023 NTT DATA Corporation 56 JITコンパイラのアーキテクチャ フロントエンド バックエンド
  • 57. © 2023 NTT DATA Corporation 57 フロントエンド  ハードウェアからは独立  バイトコードからIRを生成する  IRに最適化をほどこす  このIRはHIRと呼ぶ • High-Level IR: 高水準中間表現
  • 58. © 2023 NTT DATA Corporation 58 バックエンド  ハードウェアに依存  レジスタを割り当てる  LIRから機械語を生成する • Low-Level IR: 低水準中間言語
  • 59. © 2023 NTT DATA Corporation 59 JITコンパイラのアーキテクチャ 59 クラス ロード バイト コード HIR HIR LIR LIR 機械語 コード フロントエンド バックエンド HIR生成 最適化 レジスタ割当 コード生成
  • 60. © 2023 NTT DATA Corporation 60 JITコンパイルによる最適化とは  IRグラフに対するパターンマッチ • グラフのノードを置換する Aノード Bノード Cノード Dノード Dノード Eノード 最適化パターンにマッチ! ※ 極度に簡略化した例です
  • 61. © 2023 NTT DATA Corporation 61 JVMにグラフを出力させる  OpenJDKのデバッグビルド版 • リリース版では以下のオプションは使用できない  -XX:PrintIdealGraphLevel=[0-4] -XX:PrintIdealGraphFile=filename  出力ファイルをIGVで開く
  • 62. © 2023 NTT DATA Corporation 62 IGVデモ
  • 63. © 2023 NTT DATA Corporation 63 まとめ  JVMはJavaのバージョンアップとともに より速く より運用しやすくなっている • 実行環境は選び得るもっとも新しいJavaバージョンにしよう  さまざまなプロジェクトが進行中で 細かな改善に加え 新たな観点の機能も加わっていく
  • 64. © 2023 NTT DATA Corporation 64 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。