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

並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門Yoshimura Soichiro
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight RecorderYoshiro Tokumasu
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya MoritaInsight Technology, Inc.
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャーssuser070fa9
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Ryosuke Uchitate
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...Shinji Takao
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpYahoo!デベロッパーネットワーク
 
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)NTT DATA Technology & Innovation
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみようTsunenaga Hanyuda
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with KarateTakanori Suzuki
 

What's hot (20)

並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
 
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 

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

より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)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
 
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
 
オススメの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
 
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
 

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

より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
オレ流の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 発表資料)
 
オススメの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 発表資料)
 
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の実現
 

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

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: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 UnderstandingToru Tamaki
 
論文紹介: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...Toru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: 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 Gamesatsushi061452
 

Recently uploaded (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
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デバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: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
 
論文紹介: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...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: 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
 

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 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です