Java

jps 程序是 JVM 程序嗎?

  • April 15, 2019

在 Ubuntu 上,man jps

jps - 列出目標系統上已檢測的 Java 虛擬機 (JVM)。

“儀表化的 Java 虛擬機”是什麼意思?

$ jps -v
29584 Jps -Dapplication.home=/usr/lib/jvm/java-11-openjdk-amd64 -Xms8m -Djdk.module.main=jdk.jcmd

根據定義,jps 程序是 JVM 程序嗎?

jps 是一個 ELF 文件,而不是從 Java 程序編譯的 JVM 字節碼程序:

$ file /usr/lib/jvm/java-11-openjdk-amd64/bin/jps
/usr/lib/jvm/java-11-openjdk-amd64/bin/jps: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=3f48c70ab711b493ee793c92c19b3a884896bb4d, stripped

謝謝。

“儀表化的 Java 虛擬機”是什麼意思?

在 Linux 上,“儀表化 Java 虛擬機”是使用選項啟動的 vm——-XX:+UsePerfData預設情況下是打開的。

這將導致它儲存性能和其他資訊到一個/tmp/hsperfdata_$USER/$PID文件中,該文件將由該jps(1)工具讀取。

如果您想啟動一個未安裝的 JVM,請將其作為java -XX:-UsePerfData YourClass. 這將阻止它寫入 hsperfdata 並出現在jps的輸出中。

根據定義,jps 程序是 JVM 程序嗎?

是的

jps 是一個 ELF 文件,而不是從 Java 程序編譯的 JVM 字節碼程序:

jps只是一個啟動器,它將啟動一個 JVM 並sun.tools.jps.Jps從中載入 java 類tools.jar。以這種方式啟動的 JVM 將編寫自己的 hsperfdata 文件,這就是Jps該類出現在自己的輸出中的原因。您可以通過開關將與上述相同的選項傳遞給 JVM 來關閉它-J

$ jps
12583 Jps
$ jps -J-XX:-UsePerfData
$

引用自:https://unix.stackexchange.com/questions/512328