在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谢谢。
发布于 2019-04-14 21:54:47
“仪器化Java虚拟机”是什么意思?
在Linux上,一个“仪器化的Java”是由-XX:+UsePerfData选项启动的vm --默认情况下是打开的。
这将导致存储性能&其他信息进入/tmp/hsperfdata_$USER/$PID文件,该文件将由jps(1)工具读取。
如果您想启动一个未使用仪器的JVM,请以java -XX:-UsePerfData YourClass的形式运行它。这将阻止jps的S输出中写入hsperfdata和出现在其中。
根据定义,jps进程是JVM进程吗?
是
jps是一个ELF文件,而不是从Java程序编译的JVM字节码程序:
jps只是一个启动器,它将启动一个JVM并将sun.tools.jps.Jps java类从tools.jar加载到其中。JVM以这种方式开始编写自己的hsperfdata文件,这就是为什么Jps类出现在自己的输出中。您可以通过通过-J开关将上述相同的选项传递给JVM来关闭它:
$ jps
12583 Jps
$ jps -J-XX:-UsePerfData
$发布于 2019-04-14 05:17:53
是的,jps是一个Java应用程序。
来自甲骨文博客:
这就是jps命令派上用场的地方。它将列出为您正在使用的JDK安装目录启动的所有虚拟机的进程It。您的输出,特别是进程ids,可能会有所不同:> jps 5156 Jps 4276 MyFrame,因为jps命令本身就是一个Java程序,它也显示在列表中。
https://unix.stackexchange.com/questions/512328
复制相似问题