10

jps を使用して実行中の Java プロセスを一覧表示し、jstack -l process_id を使用して実行中の Java プロセスのスタック情報を取得できます。このプロセスがどの Java バージョンで実行されるかを知りたいです。それを行う方法はありますか?jstack ツールを使用する必要はありません。ありがとう。

jstack -l 23819 2014-11-12 12:36:11 完全なスレッド ダンプ OpenJDK 64 ビット サーバー VM (23.25-b01 混合モード):

「リスナーのアタッチ」デーモン prio=10 tid=0x000000000272f800 nid=0x614b 条件 [0x0000000000000000] で待機中 java.lang.Thread.State: RUNNABLE

ロックされた所有可能なシンクロナイザー: - なし

4

4 に答える 4

20

次のように、jcmd を介して実行できます。

jcmd process_id VM.version
于 2014-11-12T21:08:58.650 に答える
3

標準コマンドを使用した簡単なソリューションは次のようになります。

lsof -p PID | grep jdk

プロセスによってロードされたファイルのリストが表示されます。

于 2015-10-13T16:02:22.233 に答える
0

アンドリューのソリューションの方が優れており、おそらくあなたが探しているものだと思います。それにもかかわらず、ここに別の解決策があります:

ps -A | grep "^ <the pid>" | grep -o "jdk.*.jdk"

私が実行していたプログラムの出力:

jdk1.8.0_05.jdk
于 2014-11-12T21:14:02.087 に答える