SlideShare una empresa de Scribd logo
1 de 55
© 2022 NTT DATA Corporation
Java 18で入ったJVM関連の(やや細かめな)改善
2022年3月29日 JJUGナイトセミナー
株式会社NTTデータ
阪田 浩一
自己紹介
• Javaチャンピオン
• OpenJDK Author
• 株式会社NTTデータ所属
• JVMがとにかく好き
© 2022 NTT DATA Corporation 2
Koichi Sakata
阪田 浩一
jyukutyo
本セッションの流れ
1. Java 18でJVMに(ほんの少し)関連するJEP
2. Java 18以降でコンテナ環境でJavaを使う際に
少しうれしい変更
3. 18には入っていないがここ最近入った興味深い改善点
4. 3.の内容を使ってVector APIを深堀り
セッション時間はQ&Aを含めて30分程度です
© 2022 NTT DATA Corporation 3
© 2022 NTT DATA Corporation 4
Java 18でJVMに(ほんの少し)
関連するJEP
Java 18でJVMに(ほんの少し)関連するJEP
• JEP 416: Reimplement Core Reflection
with Method Handles
• JEP 421: Deprecate Finalization for Removal
© 2022 NTT DATA Corporation 5
JEP 416: Reimplement Core Reflection with Method Handles
• リフレクション機能のクラス (Method, Constructor, Field)
をメソッドハンドルを使って再実装する
» 再実装するだけで従来と振る舞いは変わらない
» マイクロベンチマークではよくある使い方の
上記のインスタンスをstatic finalフィールドに保持する
使い方であればパフォーマンスが向上する(43-57%⬆)
© 2022 NTT DATA Corporation 6
JEP 416: Reimplement Core Reflection with Method Handles
• 再実装する理由
1. Valhallaで言語機能の追加(value classやprimitive class)を
予定している
2. 従来のコードでは内部的に3つのコードパスがある
3. Valhallaへの対応で3つすべてを更新するのは高コストとなる
4. 現段階でメソッドハンドルを使うよう統一して備えておく
© 2022 NTT DATA Corporation 7
JEP 416: Reimplement Core Reflection with Method Handles
• 再実装する理由
1. Valhallaで言語機能の追加(value classやprimitive class)を
予定している
2. 従来のコードでは内部的に3つのコードパスがある
3. Valhallaへの対応で3つすべてを更新するのは高コストとなる
4. 現段階でメソッドハンドルを使うよう統一して備えておく
• ネイティブスタックフレームの使用も削減でき
Loom対応時にもメリットがある
• 振る舞いは変わらないのでアプリケーション開発者は
このJEPを調べなくてもよい
© 2022 NTT DATA Corporation 8
JEP 421: Deprecate Finalization for Removal
• finalize()メソッドを削除を前提とした非推奨APIに
» すでにJava 9から非推奨になっている
» 18で@Deprecated(forRemoval=true) にしたということ
© 2022 NTT DATA Corporation 9
JEP 421: Deprecate Finalization for Removal
• finalize()メソッドを削除を前提とした非推奨APIに
» すでにJava 9から非推奨になっている
» 18で@Deprecated(forRemoval=true) にしたということ
» 実行時オプション--finalization=enabled/disabledを追加
» 警告表示
-> オプションで指定したときのみ有効
-> 機能自体の削除
とバージョンごとに進んでいく見込み
© 2022 NTT DATA Corporation 10
参考:finalize()に限らず非推奨の使用を検出するツール
• jdeprscanコマンド
» Java 9から
» クラス単体だけでなくJARファイルにも使用できる
© 2022 NTT DATA Corporation 11
参考:finalize()に限らず非推奨の使用を検出するツール
• jdeprscanコマンド
» Java 9から
» クラス単体だけでなくJARファイルにも使用できる
© 2022 NTT DATA Corporation 12
そもそもfinalize()を使ってはいけない
• みなさんは仕事のコードで使ったことがありますか?
» finalize()が適切な場面はまずない
• try-with-resources + java.lang.AutoCloseableを
使う方が良い
» Java 7で導入
© 2022 NTT DATA Corporation 13
そもそもfinalize()を使ってはいけない
• みなさんは仕事のコードで使ったことがありますか?
» finalize()が適切な場面はまずない
• try-with-resources + java.lang.AutoCloseableを
使う方が良い
» Java 7で導入
• 代替としてjava.lang.ref.Cleanerもある
» Java 9で導入
• 書籍『Effective Java』では
finalize()もCleanerも使わないことを推奨している
» P.30 項目8 ファイナライザとクリーナーを避ける
© 2022 NTT DATA Corporation 14
別件:JFRにfinalizationイベントを新設
• jdk.FinalizerStatisticsイベントを追加した
» [JDK-8266936] Add a finalization JFR event
© 2022 NTT DATA Corporation 15
© 2022 NTT DATA Corporation 16
Java 18以降で
コンテナ環境でJavaを使う際に
少しうれしい変更
コンテナ環境でのUnified Logging (ULログ)
• まずUnified Loggingとは
» JVM内部のすべてのコンポーネントで共通的に利用する
ログシステム
» Java 9から
» -Xlogオプションをつけてアプリケーションを実行すると
JVMのログを出力できる
© 2022 NTT DATA Corporation 17
コンテナ環境でのUnified Logging (ULログ)
• 各コンテナのULログを集約するケースは多くある
• ログデータ収集管理ツール (Fluent BitやLogstashなど)で
ULログを送る
© 2022 NTT DATA Corporation 18
コンテナ環境でのUnified Logging (ULログ)
• 各コンテナのULログを集約するケースは多くある
• ログデータ収集管理ツール (Fluent BitやLogstashなど)で
ULログを送る
• 実はULログに複数行エントリが出ることがある
» 上記ツール側でパース設定する方法もあるが…
» そもそも全エントリを必ず1行で出力してくれる方がよい
© 2022 NTT DATA Corporation 19
複数行エントリが出る例
© 2022 NTT DATA Corporation 20
class ULMultiLine {
public static void main(String... args) {
throw new NullPointerException();
}
}
# Java 17以前で実行する
$ java -Xlog ULMultiLine
(中略)
[0.035s][info][exceptions ] Exception <a 'java/lang/NullPointerException'{0x000000061fc19180}>⏎
thrown in interpreter method <{method} {0x000000013d400210} 'main' '([Ljava/lang/String;)V' in 'ULMultiLine'>⏎
at bci 7 for thread 0x00007fdb19808800 (main)
複数行エントリが出る例
© 2022 NTT DATA Corporation 21
class ULMultiLine {
public static void main(String... args) {
throw new NullPointerException();
}
}
# Java 17以前で実行する
$ java -Xlog ULMultiLine
(中略)
[0.035s][info][exceptions ] Exception <a 'java/lang/NullPointerException'{0x000000061fc19180}>⏎
thrown in interpreter method <{method} {0x000000013d400210} 'main' '([Ljava/lang/String;)V' in 'ULMultiLine'>⏎
at bci 7 for thread 0x00007fdb19808800 (main)
パースが必要となる
ULに新オプションを導入した
• ULのoutput-optionsにfoldmultilines=trueを指定すると
ULログのエントリをつねに1行で出力する
» 参考:ULログの設定方法
-Xlog:[[selections]:[output]:[decorators]:[output-options]]
• []は省略可能を意味する
© 2022 NTT DATA Corporation 22
ULに新オプションを導入した
• ULのoutput-optionsにfoldmultilines=trueを指定すると
ULログのエントリをつねに1行で出力する
» 参考:ULログの設定方法
-Xlog:[[selections]:[output]:[decorators]:[output-options]]
• []は省略可能を意味する
» [JDK-8271186] Add UL option to replace newline char
» [JDK-8273471] Add foldmultilines to UL for stdout/err
© 2022 NTT DATA Corporation 23
# Java 18で実行する
$ java -Xlog::::foldmultilines=true ULMultiLine
(中略)
[2.107s][info][exceptions ] Exception <a 'java/lang/NullPointerException'{0x000000061f89a330}>n thrown
in interpreter method <{method} {0x000000012e011230} 'main' '([Ljava/lang/String;)V' in 'ULMultiLine'>n at bci 7
for thread 0x00007fc0b800ce10 (main)
コンテナ環境でのUnified Logging (ULログ)
• 各コンテナのULログを集約するケース
• ログデータ収集管理ツール (Fluent BitやLogstashなど)で
ULログを送る
• foldmultilines=trueが追加されてULログの収集が
より簡便になった
© 2022 NTT DATA Corporation 24
© 2022 NTT DATA Corporation 25
18には入っていないが
ここ最近入った興味深い改善点
HSDISの改善
• 直近2月3月にいくつかコミットがあった
» https://bugs.openjdk.java.net/browse/JDK-8188073
• Issueはこれ自体とその中のIssue Linksにも関連Issueがある
© 2022 NTT DATA Corporation 26
HSDISの改善
• 直近2月3月にいくつかコミットがあった
» https://bugs.openjdk.java.net/browse/JDK-8188073
• Issueはこれ自体とその中のIssue Linksにも関連Issueがある
• 18は昨年末にRampdownフェーズに入っている
» よって上記の内容が入るのは19になる
• 18にJVM関連の話題は少ない上
これが今後話題になる機会は限りなく少ないので
今日話します
© 2022 NTT DATA Corporation 27
そもそもHSDISとは何か
• HotSpot Disassembler
» ディスアセンブラ、逆アセンブラ
» JITコンパイラが生成した機械語をアセンブリ言語にする
» OpenJDKのソースコードに含まれるツールの1つ
© 2022 NTT DATA Corporation 28
JITコンパイル
• JVMにあるJITコンパイラはアプリケーション実行中にJava
バイトコードを機械語にコンパイル[1]する
[1] javacでのコンパイルとはまったく別のものです
© 2022 NTT DATA Corporation 29
Javaバイトコード プロファイル情報
機械語
JITコンパイラによるJITコンパイル
HSDISでのディスアセンブル
• 機械語は0と1の羅列のため人を超えなければ読めない
• HSDISで機械語をアセンブリ言語に
ディスアセンブルすることで人は読める(こともある)
© 2022 NTT DATA Corporation 30
Javaバイトコード
機械語
HSDISでディスアセンブル
アセンブリ言語
何のためにHSDISを使うのか
• 機械語は0と1の羅列のため人を超えなければ読めない
• HSDISで機械語をアセンブリ言語に
ディスアセンブルすることで人は読める(こともある)
» JITコンパイラが生成したコードを確認できる
• 特定のメソッドがコンパイルされているかを確認したい場合がある
» とくに想定するCPUの命令を使っているかを確認したいとき
• 特定箇所にパフォーマンスに問題があるとき
• 実行時オプションにたとえばUseAVXなどを指定したとき
© 2022 NTT DATA Corporation 31
どんな改善点なのか
• (以前の)別ディレクトリでビルドするのではなく
OpenJDK本体と同じようにビルドできるようになった
• ディスアセンブルのバックエンドにGNU Binutilsだけで
なくLLVMとCapstoneも使えるようになった
» LLVM Compiler Infrastructure
» The Ultimate Disassembly Framework – Capstone
© 2022 NTT DATA Corporation 32
HSDISの以前のビルド手順
• OpenJDKでsrc/utils/hsdisディレクトリへ移動する
• GNU Binutilsの比較的新しいバージョンを入手する
» ダウンロードして解凍する
© 2022 NTT DATA Corporation 33
HSDISの以前のビルド手順
• OpenJDKでsrc/utils/hsdisディレクトリへ移動する
• GNU Binutilsの比較的新しいバージョンを入手する
» ダウンロードして解凍する
• make BINUTILS=[Binutilsディレクトリ] ARCH=amd64
» src/utils/hsdis/build/macosx-amd64/hsdis-amd64.dylib (macOS)
» linuxはSOファイル、WindowsはDLLファイルができる
© 2022 NTT DATA Corporation 34
HSDISの新しいビルド手順
• OpenJDKのルートディレクトリへ移動する
• バックエンドを準備する
» パッケージマネージャーでインストールする
• brew install llvm capstone
» Binutilsはソースコードのみでも可
© 2022 NTT DATA Corporation 35
HSDISの新しいビルド手順
• OpenJDKのルートディレクトリへ移動する
• バックエンドを準備する
» パッケージマネージャーでインストールする
• brew install llvm capstone
» Binutilsはソースコードのみでも可
• OpenJDKと一緒にビルドする場合のコマンド例
» bash configure --enable-hsdis-bundling --with-hsdis=llvm
• 必要に応じて--with-llvm, -with-capstone, --with-binutils-src,
--with-binutilsで場所を指定できる
» make images
• 18では使用できない(masterブランチ、19系タグは🆗)
© 2022 NTT DATA Corporation 36
HSDISの新しいビルド手順 2
• HSDIS単体のビルドする場合のコマンド例
» bash configure --with-hsdis=binutils
--with-binutils-src=[binutilsディレクトリ]
» make build-hsdis
© 2022 NTT DATA Corporation 37
HSDISの新しいビルド手順 2
• HSDIS単体のビルドする場合のコマンド例
» bash configure --with-hsdis=binutils
--with-binutils-src=[binutilsディレクトリ]
» make build-hsdis
• build/macosx-x86_64-server-release/support/hsdis/
といったディレクトリにHSDISのファイルを出力する
• 以前のようにディレクトリを移動せず生成でき
ビルドがより簡単になった
© 2022 NTT DATA Corporation 38
Java 18でも新しい方法が使える?
• HSDIS単体のビルドする場合のコマンド例
» bash configure --with-hsdis=binutils
--with-binutils-src=[binutilsディレクトリ]
» make build-hsdis
• 18では上記コマンドを実行できるが
動作が不完全である
» タグjdk-18+gaで動作確認済
» HSDISのファイル(hsdis-amd64.so/dylib)が生成されない
» masterブランチでは前スライドの通り生成できる
© 2022 NTT DATA Corporation 39
デモ:HSDIS単独のビルド
© 2022 NTT DATA Corporation 40
HSDISのファイルはどうやって使うの?
• ファイルを$JAVA_HOME/lib/serverに置く
» Java 8までは$JAVA_HOME/jre/lib
• オプションをつけてjavaコマンドを実行する
» -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly
© 2022 NTT DATA Corporation 41
デモ:アセンブリ出力確認
© 2022 NTT DATA Corporation 42
デモ:アセンブリ出力確認
• 全JITコンパイルが出る
» 対象メソッドを絞りたい場合は
1. コンパイラコントロールを使う(Java 9から)
2. -XX:CompileOnlyオプションを使う
© 2022 NTT DATA Corporation 43
バックエンドによって出力が異なる?
© 2022 NTT DATA Corporation 44
LLVM Capstone
今日を迎える直前に直っていました
© 2022 NTT DATA Corporation 45
Capstone
https://github.com/openjdk/jdk/pull/7904
© 2022 NTT DATA Corporation 46
Vector APIをHSDISで
見てみよう
Vector API
• https://openjdk.java.net/jeps/417
• 18で3rd Incubator
© 2022 NTT DATA Corporation 47
Vector API
• https://openjdk.java.net/jeps/417
• 18で3rd Incubator
• Vector APIではJITコンパイル時にCPUアーキテクチャがサ
ポートするベクトル命令を使用する機械語を生成する
» SIMD命令
• x86ではSSE, AVX, AVX2, AVX-512
• ARMではNeon, Scalar Vector Extension(SVE)
• 本当にベクトル命令を使えているのかを見たい
» HSDISを使って確認できる
© 2022 NTT DATA Corporation 48
Vector API使用サンプルコード
import jdk.incubator.vector.*;
class VectorAPISample {
public static float[] dummyVar;
public static void main(String... args) {
float[] left = new float[] {0.0F,1.0F,1.5F,2.0F,0.0F,1.0F,1.5F,2.0F};
float[] right = new float[] {10.0F,11.0F,11.5F,12.0F,100.0F,101.0F,101.5F,102.0F};
var fva = new FloatVectorAddition();
for (int i = 0; i < 500_0000; i++) {
dummyVar = fva.add(left, right);
}
}
}
© 2022 NTT DATA Corporation 49
floatが8つある配列
32ビット * 8 = 256ビット
Vector API使用サンプルコード
import jdk.incubator.vector.*;
class FloatVectorAddition {
public float[] add(float[] left, float[] right) {
VectorSpecies<Float> species = FloatVector.SPECIES_256;
FloatVector l = FloatVector.fromArray(species, left, 0);
FloatVector r = FloatVector.fromArray(species, right, 0);
var lr = l.add(r);
float[] res = new float[8];
lr.intoArray(res, 0);
return res;
}
}
© 2022 NTT DATA Corporation 50
256ビット分を
一度に計算する指定
0 1 1.5 2 0 1 1.5 2
10 11 11.5 12 100 101 101.5 102
10 11 13 14 100 102 103 104
一気に加算
© 2022 NTT DATA Corporation 51
$ javac --add-modules jdk.incubator.vector VectorAPISample.java
$ java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly --add-modules
jdk.incubator.vector VectorAPISample (実際は1行)
• Vector APIはIncubatorモジュール
» コンパイル時、実行時ともに--add-modulesでモジュール名を
指定する必要がある
• アセンブリの出力にSIMD命令があるかを見る
Vector API使用サンプル 実行
© 2022 NTT DATA Corporation 52
vaddpsは単精度浮動小数点のベクトル加算演算
ymmレジスタを使っている
SIMDレジスタ (Intel)
• xmm (128ビット)
• ymm (256ビット)
• zmm (512ビット)
HSDISだけを取ってもまだまだ進化している
• バックエンドにLLVMやCapstoneが入ったのは
最近なのでコントリビュートする機会が見つかるかも
» アセンブリなのでCPUアーキテクチャで違いも
© 2022 NTT DATA Corporation 53
このセッションのまとめ
• Java 18ではJVM関連の大きな変更点はない
• ValhallaやLoomの準備として内部実装を改善している
• finalize()は9から非推奨、18で削除予定ステータスに
• Unified Loggingのエントリをすべて1行で出せる
ようになった
• HSDISのビルド手順を改善している
• Vector APIがCPUのSIMD命令を使っていることを
HSDISで確認できる
© 2022 NTT DATA Corporation 54
© 2022 NTT DATA Corporation
All other company or product names mentioned here in are trademarks or registered trademarks of their respective owners.

Más contenido relacionado

La actualidad más candente

Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
理弘 山崎
 

La actualidad más candente (20)

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 

Similar a Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)

20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
samemoon
 

Similar a Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料) (20)

Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
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...
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
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 発表資料)
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
 
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月
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Más de NTT DATA Technology & Innovation

Más 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

Último (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)