SlideShare a Scribd company logo
1 of 72
© 2021 NTT DATA Corporation
JAVA_HOME/binにあるコマンド、いくつ使っていますか?
[JVM関連ツール編]
2021年10月7日 JJUGナイトセミナー
株式会社NTTデータ
阪田 浩一
2
© 2021 NTT DATA Corporation
自己紹介
 株式会社NTTデータ 所属
 OpenJDK関連の研究開発
 Javaでのサポート、トラブルシュート、障害解析
 Javaチャンピオン
 OpenJDK Author (開発者権限が少しある)
 とにかくJVMに(詳しく)なりたい
阪田 浩一
jyukutyo
3
© 2021 NTT DATA Corporation
このセッションの対象と想定している方
 Javaアプリケーションの開発運用をしている方
 トラブルシュート経験がある方には
"復習"となります
入門的な内容です!
© 2020 NTT DATA Corporation
JAVA_HOME/binにある
コマンド
5
© 2021 NTT DATA Corporation
JAVA_HOME/binディレクトリ
 Java 8 : 43個
 Java 17: 28個
6
© 2021 NTT DATA Corporation
https://docs.oracle.com/en/java/javase/17/docs/specs/man/index.html
28個ある
7
© 2021 NTT DATA Corporation
このセッションでの"解析ツール"の範囲
 問題(障害、不具合など)を解決する
 データ取得、収集ツール
 収集したデータの解析(可視化)ツール
8
© 2021 NTT DATA Corporation
このセッションでの"解析ツール"の範囲
 問題(障害、不具合など)を解決する
 データ取得、収集ツール
• 収集に関する設定の追加変更を含む
 収集したデータの解析(可視化)ツール
© 2020 NTT DATA Corporation
その要求 このコマンドで
満たせます
10
© 2021 NTT DATA Corporation
要求 No.1
 障害発生!今後再発したらすぐスレッドダンプを
取っておいて!
 jcmdコマンドでスレッドダンプを取ろう
 jstackコマンドは使わない
https://docs.oracle.com/en/java/javase/17/troubleshoot/diagnostic-tools.html#GUID-36CBAF37-0B61-4455-9183-1268E6D497DD
11
© 2021 NTT DATA Corporation
要求 No.2
 フライトレコードを取りたい!
アプリケーションは再起動させずにね!
 jcmdコマンドでレコーディングを開始しよう
12
© 2021 NTT DATA Corporation
要求 No.3
 Unified Loggingのログ出力を設定したい!
アプリケーションは再起動させずにね!
 jcmdコマンドでULログ出力を設定しよう
13
© 2021 NTT DATA Corporation
結論
 jcmdがあれば何でもできる!
 注: ↑は誇張表現です
 対象はローカルプロセスのみ
 jcmd <pid|main_class> command ...
• pidはプロセスIDのこと
• 以降pidの方を使います
14
© 2021 NTT DATA Corporation
前述の要求を実現するjcmdのコマンド
 要求 No.1: スレッドダンプ取得
 jcmd <pid> Thread.print
 要求 No.2: フライトレコード開始
 jcmd <pid> JFR.start duration=1m filename=app.jfr
 要求 No.3: ログ設定追加
 jcmd <pid> VM.log output="sample.log"
output_options="filecount=3"
15
© 2021 NTT DATA Corporation
jcmdでのコマンドのドメイン
ドメイン 内容
VM JVMの実行情報取得 ログ設定など
Compiler JITコンパイラ関連
GC ガベージコレクション関連
Thread 現状スレッドダンプのみ
JVMTI JVM Tool Interface関連 エージェントのロードなど
JFR フライトレコード関連
ManagementAgent JMXエージェント関連
 jcmd <pid> command (ドメイン.操作という形式)
 コマンドとは別個の命令としてPerfcounter.printもある
16
© 2021 NTT DATA Corporation
pidを調べる
 pidとはプロセスIDのこと
 jcmdで調べられる!
 以前からあるjpsでもOK - 2つはオプションに差異あり
17
© 2021 NTT DATA Corporation
利用できるコマンドを確認するには
 jcmd <pid> help
© 2021 NTT DATA Corporation 18
各ドメインを概観します
19
© 2021 NTT DATA Corporation
Threadドメイン
 jcmd <pid> Thread.print のみ
20
© 2021 NTT DATA Corporation
各コマンドの詳細を確認するには
 jcmd <pid> help command
21
© 2021 NTT DATA Corporation
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
22
© 2021 NTT DATA Corporation
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
23
© 2021 NTT DATA Corporation
脱線: Java 16のjcmdにおけるULログ設定バグ
24
© 2021 NTT DATA Corporation
脱線: jcmdのバグ修正
https://bugs.openjdk.java.net/browse/JDK-8265047
25
© 2021 NTT DATA Corporation
26
© 2021 NTT DATA Corporation
脱線: Java 17のjcmdでのULログ
27
© 2021 NTT DATA Corporation
脱線: jcmdのバグ修正
 jcmd, jhsdb (後述) などのコマンド関連では
Java 17に対して3つほどコントリビュートできた
 コマンドは試しやすいのでバグを見つけられるかも!
 試すうちにJVMの知識もつき労力対効果がよい!
28
© 2021 NTT DATA Corporation
GCドメイン
 ガベージコレクションの情報取得
GC.class_histogram
GC.finalizer_info
GC.heap_dump
GC.heap_info
GC.run
GC.run_finalization
29
© 2021 NTT DATA Corporation
Compilerドメイン
 JITコンパイラの情報取得、取得設定
Compiler.codecache
Compiler.codelist
Compiler.queue
Compiler.directives_add
Compiler.directives_clear
Compiler.directives_print
Compiler.directives_remove
30
© 2021 NTT DATA Corporation
JVMTIドメイン
 JVM Tool Interface関連
JVMTI.agent_load
JVMTI.data_dump
31
© 2021 NTT DATA Corporation
ManagementAgentドメイン、JFRドメイン
 後で詳しく説明します
32
© 2021 NTT DATA Corporation
使わなくなったコマンドたち
 jcmdで同様のことができるコマンド
 jstack
 jinfo
• jcmd VMドメインにあるコマンドたちを使用
 jmap
• 例) ヒープダンプ: GC.heap_dump <filename>
• 例) ヒープヒストグラム: GC.class_histogram
33
© 2021 NTT DATA Corporation
jcmdまとめ
 jcmd 1つでとても広い範囲をカバーする
 ドメインが7つある
• VM, Compiler, GC, Thread, JVMTI, JFR,
ManagementAgent (+ Perfcounter.print)
 jstackやjmapは忘れてよい
34
© 2021 NTT DATA Corporation
JAVA_HOME/binディレクトリ
 Java 17: ここまでで5つ
© 2020 NTT DATA Corporation
ローカルだけ?
リモートのときは?
36
© 2021 NTT DATA Corporation
リモートのときは?
 jcmdはローカルプロセスのみ
 JMX経由で特定のMBeanを使えば
リモートでもjcmdと同等の機能が使える
 厳密に言えばリモートからは使えない機能もある
 JMXやMBeanについてはこのセッションの範囲外の
ため説明を省きます
37
© 2021 NTT DATA Corporation
アプリケーションへのJMXの設定
 起動オプションでの設定
 -Dcom.sun.management.jmxremote.port=9010
 他に認証やSSLの有効無効の設定
 -Dcom.sun.management.[authenticate|ssl]=false
38
© 2021 NTT DATA Corporation
jcmdのManagementAgentドメイン
 JMXエージェントの開始、終了
ManagementAgent.start
ManagementAgent.start_local
ManagementAgent.status
ManagementAgent.stop
39
© 2021 NTT DATA Corporation
アプリケーションへのJMXの設定
 起動オプションでの設定
 -Dcom.sun.management.jmxremote.port=9010
 他に認証やSSLの有効無効の設定
 -Dcom.sun.management.[authenticate|ssl]=false
 jcmdでの設定
 jcmd <pid> ManagementAgent.start
jmxremote.port=9010
jmxremote.authenticate=false
jmxremote.ssl=false
40
© 2021 NTT DATA Corporation
JMXクライアント
 JMXエージェントに接続するツール
 JAVA_HOME/binにあるJMXクライアント
 jconsole
41
© 2021 NTT DATA Corporation
jconsole
 引数を必要とするMBeanの操作は実行できない
42
© 2021 NTT DATA Corporation
JMXクライアント
 JAVA_HOME/binにあるJMXクライアント
 jconsole
 他入手できるJMXクライアント
 JDK Mission Control (JMC)
 VisualVM JMC、VisualVMとも
今はJDKに含まれません
43
© 2021 NTT DATA Corporation
JDK Mission Control (JMC)
 引数を必要とするMBeanの操作も実行できる
44
© 2021 NTT DATA Corporation
JMXクライアント
 JAVA_HOME/binにあるJMXクライアント
 jconsole
 他入手できるJMXクライアント
 JDK Mission Control (JMC)
 VisualVM
 Javaコードを書く
 javax.managementパッケージ
45
© 2021 NTT DATA Corporation
脱線: コードでJMXを経由しMBeanを操作する
JMXServiceURL url =
new JMXServiceURL("service:jmx:rmi:///jndi/rmi://[host]:[port]/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(url, null);
MBeanServerConnection connection = connector.getMBeanServerConnection();
ObjectName objectName =
new ObjectName("com.sun.management:type=DiagnosticCommand");
String operationName = "threadPrint";
String[] signature = new String[]{String[].class.getName()};
String result = (String) connection.invoke(objectName, operationName,
new Object[] { null }, signature);
 DiagnosticCommandMBeanでスレッドダンプ
46
© 2021 NTT DATA Corporation
DiagnosticCommandMBean
 jcmdにある機能のほぼすべてを使用できる
47
© 2021 NTT DATA Corporation
JMXの利用まとめ
 起動後でもjcmdでJMXエージェントを起動できる
 JMXクライアントはGUIツールを使用することも
コードで実装することもできる
 GUIツールはJMCを別途ダウンロードするのがよい
• jconsoleを積極的に推す理由はおそらくない
48
© 2021 NTT DATA Corporation
JAVA_HOME/binディレクトリ
 Java 17: ここまでで6つ
© 2020 NTT DATA Corporation
フライトレコードの
取り扱い
50
© 2021 NTT DATA Corporation
フライトレコード
 JDK Flight Recorder
 フライトレコーダ自体の解説は省きます
 起動オプションでのフライトレコード設定
 -XX:StartFlightRecording=dumponexit=true,
filename=./app.jfr
51
© 2021 NTT DATA Corporation
jcmdのJFRドメイン
 JDK Flight Recorderの開始、終了、設定変更
JFR.check
JFR.configure
JFR.dump
JFR.start
JFR.stop
52
© 2021 NTT DATA Corporation
jcmdでのフライトレコード取得
 コマンド例
 jcmd <pid> JFR.start duration=1m filename=app.jfr
 jcmd <pid> JFR.stop
 jcmd <pid> JFR.dump filename=app.jfr
53
© 2021 NTT DATA Corporation
フライトレコードの分析
 分析ツール
 JDK Mission Control (JMC)
 jfrコマンド
54
© 2021 NTT DATA Corporation
jfrコマンド
 jfr [サブコマンド] ... jfrファイル
サブコマンド 内容
summary フライトレコードの統計を出力する
print フライトレコードのコンテンツを出力する
assemble 複数のjfrファイルを1つにまとめる
disassemble jfrファイルを複数に分割する
metadata
メタデータとしてイベントそのものに関する情報を
出力する
55
© 2021 NTT DATA Corporation
jfrコマンドを実行する
56
© 2021 NTT DATA Corporation
JFRまとめ
 起動後にjcmdでフライトレコードを取得できる
 jfrコマンド
 GUIツールを起動せずにフライトレコードの内容を確
認できる便利さ
• 確認する内容がはっきりしているとき
• GUIツールを使えないとき
57
© 2021 NTT DATA Corporation
JAVA_HOME/binディレクトリ
 Java 17: ここまでで7つ
© 2020 NTT DATA Corporation
クラッシュ解析
59
© 2021 NTT DATA Corporation
クラッシュしてcoreファイルが生成されたとき
 GDB...(Linux環境を想定)
 JAVA_HOME/binと関わりはありません
 HotSpot VMがC++である以上避けて通れません
 クラッシュ環境と同一環境を作りましょう
 GDBで解析
 OpenJDKでdebuginfoがあるときはうれしい
 Oracle JDKならデバッグ情報なしでがんばる
60
© 2021 NTT DATA Corporation
C++の世界とJavaの世界を行き来する
 GDBとHSDBの両方を使う
 HSDBとはHotSpot Debuggerのこと
jhsdbからも
取得できる
この3つを
解説
61
© 2021 NTT DATA Corporation
jhsdbコマンド
 jhsdb [mode] ...
 HSDBのデバッグサーバを起動すれば
リモートからGUIのHSDBで接続して解析できる
• リモートではJDKとcoreファイルでデバッグサーバを起動
mode 内容
hsdb GUIのHSDB起動
clhsdb コマンドラインのHSDB起動
debugd デバッグサーバ起動
JavaプロセスがダンプしたコアファイルをjhsdbとGDBで見る - Fight the Future https://www.sakatakoichi.com/entry/jhsdb_gdb
62
© 2021 NTT DATA Corporation
jhsdb hsdb|clhsdb
 jhsdb hsdb|clhsdb [オプション]
 プロセスIDを指定する
• --pid 9999
• macOSでSIP(System Integrity Protection)が有効だとエラー
- csrutilコマンド
 コアファイルと実行コマンドを指定する
• --core core_file --exe [JAVA_HOME]/bin/java
 デバッグサーバに接続する
• --connect ホスト名:ポートなど
GUIのHSDBであれば
画面からも指定できる
63
© 2021 NTT DATA Corporation
GUIのHSDB
64
© 2021 NTT DATA Corporation
クラッシュ解析
 HSDBでアドレスを調べて
GDBに戻ってデバッグして…
 逆の順も
65
© 2021 NTT DATA Corporation
CLHSDB
66
© 2021 NTT DATA Corporation
CLHSDBでヒストグラムを取得する
67
© 2021 NTT DATA Corporation
Java 16だとここがバグ
68
© 2021 NTT DATA Corporation
バグ修正
https://github.com/openjdk/jdk/pull/3087/files
intで扱っているから
ヒープサイズが大きいとバグが現れる
69
© 2021 NTT DATA Corporation
JAVA_HOME/binディレクトリ
 今日は以下の8つのコマンドを紹介しました! in Java 17
70
© 2021 NTT DATA Corporation
まとめ
 jcmd 1つでいろいろなことができる
 jhsdbはクラッシュ解析に使える
 新しいバージョンのJavaを使おう
 jcmdなどコマンドにも機能追加、改善が入るため
障害解析という観点でも新しい方がよい
© 2021 NTT DATA Corporation 71
明日からもJVMライフを
一緒に楽しく過ごしましょう!!
© 2021 NTT DATA Corporation
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です

More Related Content

What's hot

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight RecorderYoshiro Tokumasu
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)Yoshiro Tokumasu
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!オラクルエンジニア通信
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説貴仁 大和屋
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Metaspace
MetaspaceMetaspace
Metaspace
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
 
Node-REDからREST APIに接続
Node-REDからREST APIに接続Node-REDからREST APIに接続
Node-REDからREST APIに接続
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
Helidon 概要
Helidon 概要Helidon 概要
Helidon 概要
 
CPUから見たG1GC
CPUから見たG1GCCPUから見たG1GC
CPUから見たG1GC
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Similar to 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講演資料)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
 
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
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf勇 黒沢
 
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
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~Shinji Takao
 
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
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側Yasumasa Suenaga
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システムAtomu Hidaka
 
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
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)NTT DATA Technology & Innovation
 
マスタリング DEA/NG 第2版
マスタリング DEA/NG 第2版マスタリング DEA/NG 第2版
マスタリング DEA/NG 第2版i_yudai
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)NTT DATA Technology & Innovation
 
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]David Buck
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...NTT DATA Technology & Innovation
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperleger Tokyo Meetup
 

Similar to JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料) (20)

オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
 
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 発表資料)
 
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 講演資料)
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
 
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...
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
マスタリング DEA/NG 第2版
マスタリング DEA/NG 第2版マスタリング DEA/NG 第2版
マスタリング DEA/NG 第2版
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
 
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
 
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
 

More from 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
 

More from 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アンカンファレンス@オンライン 発表資料)
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成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...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成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...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)

  • 1. © 2021 NTT DATA Corporation JAVA_HOME/binにあるコマンド、いくつ使っていますか? [JVM関連ツール編] 2021年10月7日 JJUGナイトセミナー 株式会社NTTデータ 阪田 浩一
  • 2. 2 © 2021 NTT DATA Corporation 自己紹介  株式会社NTTデータ 所属  OpenJDK関連の研究開発  Javaでのサポート、トラブルシュート、障害解析  Javaチャンピオン  OpenJDK Author (開発者権限が少しある)  とにかくJVMに(詳しく)なりたい 阪田 浩一 jyukutyo
  • 3. 3 © 2021 NTT DATA Corporation このセッションの対象と想定している方  Javaアプリケーションの開発運用をしている方  トラブルシュート経験がある方には "復習"となります 入門的な内容です!
  • 4. © 2020 NTT DATA Corporation JAVA_HOME/binにある コマンド
  • 5. 5 © 2021 NTT DATA Corporation JAVA_HOME/binディレクトリ  Java 8 : 43個  Java 17: 28個
  • 6. 6 © 2021 NTT DATA Corporation https://docs.oracle.com/en/java/javase/17/docs/specs/man/index.html 28個ある
  • 7. 7 © 2021 NTT DATA Corporation このセッションでの"解析ツール"の範囲  問題(障害、不具合など)を解決する  データ取得、収集ツール  収集したデータの解析(可視化)ツール
  • 8. 8 © 2021 NTT DATA Corporation このセッションでの"解析ツール"の範囲  問題(障害、不具合など)を解決する  データ取得、収集ツール • 収集に関する設定の追加変更を含む  収集したデータの解析(可視化)ツール
  • 9. © 2020 NTT DATA Corporation その要求 このコマンドで 満たせます
  • 10. 10 © 2021 NTT DATA Corporation 要求 No.1  障害発生!今後再発したらすぐスレッドダンプを 取っておいて!  jcmdコマンドでスレッドダンプを取ろう  jstackコマンドは使わない https://docs.oracle.com/en/java/javase/17/troubleshoot/diagnostic-tools.html#GUID-36CBAF37-0B61-4455-9183-1268E6D497DD
  • 11. 11 © 2021 NTT DATA Corporation 要求 No.2  フライトレコードを取りたい! アプリケーションは再起動させずにね!  jcmdコマンドでレコーディングを開始しよう
  • 12. 12 © 2021 NTT DATA Corporation 要求 No.3  Unified Loggingのログ出力を設定したい! アプリケーションは再起動させずにね!  jcmdコマンドでULログ出力を設定しよう
  • 13. 13 © 2021 NTT DATA Corporation 結論  jcmdがあれば何でもできる!  注: ↑は誇張表現です  対象はローカルプロセスのみ  jcmd <pid|main_class> command ... • pidはプロセスIDのこと • 以降pidの方を使います
  • 14. 14 © 2021 NTT DATA Corporation 前述の要求を実現するjcmdのコマンド  要求 No.1: スレッドダンプ取得  jcmd <pid> Thread.print  要求 No.2: フライトレコード開始  jcmd <pid> JFR.start duration=1m filename=app.jfr  要求 No.3: ログ設定追加  jcmd <pid> VM.log output="sample.log" output_options="filecount=3"
  • 15. 15 © 2021 NTT DATA Corporation jcmdでのコマンドのドメイン ドメイン 内容 VM JVMの実行情報取得 ログ設定など Compiler JITコンパイラ関連 GC ガベージコレクション関連 Thread 現状スレッドダンプのみ JVMTI JVM Tool Interface関連 エージェントのロードなど JFR フライトレコード関連 ManagementAgent JMXエージェント関連  jcmd <pid> command (ドメイン.操作という形式)  コマンドとは別個の命令としてPerfcounter.printもある
  • 16. 16 © 2021 NTT DATA Corporation pidを調べる  pidとはプロセスIDのこと  jcmdで調べられる!  以前からあるjpsでもOK - 2つはオプションに差異あり
  • 17. 17 © 2021 NTT DATA Corporation 利用できるコマンドを確認するには  jcmd <pid> help
  • 18. © 2021 NTT DATA Corporation 18 各ドメインを概観します
  • 19. 19 © 2021 NTT DATA Corporation Threadドメイン  jcmd <pid> Thread.print のみ
  • 20. 20 © 2021 NTT DATA Corporation 各コマンドの詳細を確認するには  jcmd <pid> help command
  • 21. 21 © 2021 NTT DATA Corporation 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
  • 22. 22 © 2021 NTT DATA Corporation 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
  • 23. 23 © 2021 NTT DATA Corporation 脱線: Java 16のjcmdにおけるULログ設定バグ
  • 24. 24 © 2021 NTT DATA Corporation 脱線: jcmdのバグ修正 https://bugs.openjdk.java.net/browse/JDK-8265047
  • 25. 25 © 2021 NTT DATA Corporation
  • 26. 26 © 2021 NTT DATA Corporation 脱線: Java 17のjcmdでのULログ
  • 27. 27 © 2021 NTT DATA Corporation 脱線: jcmdのバグ修正  jcmd, jhsdb (後述) などのコマンド関連では Java 17に対して3つほどコントリビュートできた  コマンドは試しやすいのでバグを見つけられるかも!  試すうちにJVMの知識もつき労力対効果がよい!
  • 28. 28 © 2021 NTT DATA Corporation GCドメイン  ガベージコレクションの情報取得 GC.class_histogram GC.finalizer_info GC.heap_dump GC.heap_info GC.run GC.run_finalization
  • 29. 29 © 2021 NTT DATA Corporation Compilerドメイン  JITコンパイラの情報取得、取得設定 Compiler.codecache Compiler.codelist Compiler.queue Compiler.directives_add Compiler.directives_clear Compiler.directives_print Compiler.directives_remove
  • 30. 30 © 2021 NTT DATA Corporation JVMTIドメイン  JVM Tool Interface関連 JVMTI.agent_load JVMTI.data_dump
  • 31. 31 © 2021 NTT DATA Corporation ManagementAgentドメイン、JFRドメイン  後で詳しく説明します
  • 32. 32 © 2021 NTT DATA Corporation 使わなくなったコマンドたち  jcmdで同様のことができるコマンド  jstack  jinfo • jcmd VMドメインにあるコマンドたちを使用  jmap • 例) ヒープダンプ: GC.heap_dump <filename> • 例) ヒープヒストグラム: GC.class_histogram
  • 33. 33 © 2021 NTT DATA Corporation jcmdまとめ  jcmd 1つでとても広い範囲をカバーする  ドメインが7つある • VM, Compiler, GC, Thread, JVMTI, JFR, ManagementAgent (+ Perfcounter.print)  jstackやjmapは忘れてよい
  • 34. 34 © 2021 NTT DATA Corporation JAVA_HOME/binディレクトリ  Java 17: ここまでで5つ
  • 35. © 2020 NTT DATA Corporation ローカルだけ? リモートのときは?
  • 36. 36 © 2021 NTT DATA Corporation リモートのときは?  jcmdはローカルプロセスのみ  JMX経由で特定のMBeanを使えば リモートでもjcmdと同等の機能が使える  厳密に言えばリモートからは使えない機能もある  JMXやMBeanについてはこのセッションの範囲外の ため説明を省きます
  • 37. 37 © 2021 NTT DATA Corporation アプリケーションへのJMXの設定  起動オプションでの設定  -Dcom.sun.management.jmxremote.port=9010  他に認証やSSLの有効無効の設定  -Dcom.sun.management.[authenticate|ssl]=false
  • 38. 38 © 2021 NTT DATA Corporation jcmdのManagementAgentドメイン  JMXエージェントの開始、終了 ManagementAgent.start ManagementAgent.start_local ManagementAgent.status ManagementAgent.stop
  • 39. 39 © 2021 NTT DATA Corporation アプリケーションへのJMXの設定  起動オプションでの設定  -Dcom.sun.management.jmxremote.port=9010  他に認証やSSLの有効無効の設定  -Dcom.sun.management.[authenticate|ssl]=false  jcmdでの設定  jcmd <pid> ManagementAgent.start jmxremote.port=9010 jmxremote.authenticate=false jmxremote.ssl=false
  • 40. 40 © 2021 NTT DATA Corporation JMXクライアント  JMXエージェントに接続するツール  JAVA_HOME/binにあるJMXクライアント  jconsole
  • 41. 41 © 2021 NTT DATA Corporation jconsole  引数を必要とするMBeanの操作は実行できない
  • 42. 42 © 2021 NTT DATA Corporation JMXクライアント  JAVA_HOME/binにあるJMXクライアント  jconsole  他入手できるJMXクライアント  JDK Mission Control (JMC)  VisualVM JMC、VisualVMとも 今はJDKに含まれません
  • 43. 43 © 2021 NTT DATA Corporation JDK Mission Control (JMC)  引数を必要とするMBeanの操作も実行できる
  • 44. 44 © 2021 NTT DATA Corporation JMXクライアント  JAVA_HOME/binにあるJMXクライアント  jconsole  他入手できるJMXクライアント  JDK Mission Control (JMC)  VisualVM  Javaコードを書く  javax.managementパッケージ
  • 45. 45 © 2021 NTT DATA Corporation 脱線: コードでJMXを経由しMBeanを操作する JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://[host]:[port]/jmxrmi"); JMXConnector connector = JMXConnectorFactory.connect(url, null); MBeanServerConnection connection = connector.getMBeanServerConnection(); ObjectName objectName = new ObjectName("com.sun.management:type=DiagnosticCommand"); String operationName = "threadPrint"; String[] signature = new String[]{String[].class.getName()}; String result = (String) connection.invoke(objectName, operationName, new Object[] { null }, signature);  DiagnosticCommandMBeanでスレッドダンプ
  • 46. 46 © 2021 NTT DATA Corporation DiagnosticCommandMBean  jcmdにある機能のほぼすべてを使用できる
  • 47. 47 © 2021 NTT DATA Corporation JMXの利用まとめ  起動後でもjcmdでJMXエージェントを起動できる  JMXクライアントはGUIツールを使用することも コードで実装することもできる  GUIツールはJMCを別途ダウンロードするのがよい • jconsoleを積極的に推す理由はおそらくない
  • 48. 48 © 2021 NTT DATA Corporation JAVA_HOME/binディレクトリ  Java 17: ここまでで6つ
  • 49. © 2020 NTT DATA Corporation フライトレコードの 取り扱い
  • 50. 50 © 2021 NTT DATA Corporation フライトレコード  JDK Flight Recorder  フライトレコーダ自体の解説は省きます  起動オプションでのフライトレコード設定  -XX:StartFlightRecording=dumponexit=true, filename=./app.jfr
  • 51. 51 © 2021 NTT DATA Corporation jcmdのJFRドメイン  JDK Flight Recorderの開始、終了、設定変更 JFR.check JFR.configure JFR.dump JFR.start JFR.stop
  • 52. 52 © 2021 NTT DATA Corporation jcmdでのフライトレコード取得  コマンド例  jcmd <pid> JFR.start duration=1m filename=app.jfr  jcmd <pid> JFR.stop  jcmd <pid> JFR.dump filename=app.jfr
  • 53. 53 © 2021 NTT DATA Corporation フライトレコードの分析  分析ツール  JDK Mission Control (JMC)  jfrコマンド
  • 54. 54 © 2021 NTT DATA Corporation jfrコマンド  jfr [サブコマンド] ... jfrファイル サブコマンド 内容 summary フライトレコードの統計を出力する print フライトレコードのコンテンツを出力する assemble 複数のjfrファイルを1つにまとめる disassemble jfrファイルを複数に分割する metadata メタデータとしてイベントそのものに関する情報を 出力する
  • 55. 55 © 2021 NTT DATA Corporation jfrコマンドを実行する
  • 56. 56 © 2021 NTT DATA Corporation JFRまとめ  起動後にjcmdでフライトレコードを取得できる  jfrコマンド  GUIツールを起動せずにフライトレコードの内容を確 認できる便利さ • 確認する内容がはっきりしているとき • GUIツールを使えないとき
  • 57. 57 © 2021 NTT DATA Corporation JAVA_HOME/binディレクトリ  Java 17: ここまでで7つ
  • 58. © 2020 NTT DATA Corporation クラッシュ解析
  • 59. 59 © 2021 NTT DATA Corporation クラッシュしてcoreファイルが生成されたとき  GDB...(Linux環境を想定)  JAVA_HOME/binと関わりはありません  HotSpot VMがC++である以上避けて通れません  クラッシュ環境と同一環境を作りましょう  GDBで解析  OpenJDKでdebuginfoがあるときはうれしい  Oracle JDKならデバッグ情報なしでがんばる
  • 60. 60 © 2021 NTT DATA Corporation C++の世界とJavaの世界を行き来する  GDBとHSDBの両方を使う  HSDBとはHotSpot Debuggerのこと jhsdbからも 取得できる この3つを 解説
  • 61. 61 © 2021 NTT DATA Corporation jhsdbコマンド  jhsdb [mode] ...  HSDBのデバッグサーバを起動すれば リモートからGUIのHSDBで接続して解析できる • リモートではJDKとcoreファイルでデバッグサーバを起動 mode 内容 hsdb GUIのHSDB起動 clhsdb コマンドラインのHSDB起動 debugd デバッグサーバ起動 JavaプロセスがダンプしたコアファイルをjhsdbとGDBで見る - Fight the Future https://www.sakatakoichi.com/entry/jhsdb_gdb
  • 62. 62 © 2021 NTT DATA Corporation jhsdb hsdb|clhsdb  jhsdb hsdb|clhsdb [オプション]  プロセスIDを指定する • --pid 9999 • macOSでSIP(System Integrity Protection)が有効だとエラー - csrutilコマンド  コアファイルと実行コマンドを指定する • --core core_file --exe [JAVA_HOME]/bin/java  デバッグサーバに接続する • --connect ホスト名:ポートなど GUIのHSDBであれば 画面からも指定できる
  • 63. 63 © 2021 NTT DATA Corporation GUIのHSDB
  • 64. 64 © 2021 NTT DATA Corporation クラッシュ解析  HSDBでアドレスを調べて GDBに戻ってデバッグして…  逆の順も
  • 65. 65 © 2021 NTT DATA Corporation CLHSDB
  • 66. 66 © 2021 NTT DATA Corporation CLHSDBでヒストグラムを取得する
  • 67. 67 © 2021 NTT DATA Corporation Java 16だとここがバグ
  • 68. 68 © 2021 NTT DATA Corporation バグ修正 https://github.com/openjdk/jdk/pull/3087/files intで扱っているから ヒープサイズが大きいとバグが現れる
  • 69. 69 © 2021 NTT DATA Corporation JAVA_HOME/binディレクトリ  今日は以下の8つのコマンドを紹介しました! in Java 17
  • 70. 70 © 2021 NTT DATA Corporation まとめ  jcmd 1つでいろいろなことができる  jhsdbはクラッシュ解析に使える  新しいバージョンのJavaを使おう  jcmdなどコマンドにも機能追加、改善が入るため 障害解析という観点でも新しい方がよい
  • 71. © 2021 NTT DATA Corporation 71 明日からもJVMライフを 一緒に楽しく過ごしましょう!!
  • 72. © 2021 NTT DATA Corporation 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です