No Ubuntu, man jps
diz
jps - Lista as Java Virtual Machines (JVMs) instrumentadas no sistema de destino.
O que significa uma "máquina virtual Java instrumentada"?
$ jps -v
29584 Jps -Dapplication.home=/usr/lib/jvm/java-11-openjdk-amd64 -Xms8m -Djdk.module.main=jdk.jcmd
Um processo jps é um processo JVM, por definição?
jps é um arquivo ELF, não um programa de bytecode JVM compilado de um programa Java:
$ 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
Obrigado.
No Linux, uma "máquina virtual Java instrumentada" é a vm iniciada com a
-XX:+UsePerfData
opção - que está ativada por padrão.Isso fará com que o desempenho da loja e outras informações em um
/tmp/hsperfdata_$USER/$PID
arquivo, que será lido pelajps(1)
ferramenta.Se você deseja iniciar uma JVM não instrumentada, execute-a como
java -XX:-UsePerfData YourClass
. Isso impedirá que ele escreva esse hsperfdata e apareça najps
saída de .Sim
jps
é apenas um launcher , que iniciará uma JVM e carregará asun.tools.jps.Jps
classe javatools.jar
nela. A JVM iniciada desta forma irá escrever seu próprio arquivo hsperfdata, e é por isso que aJps
classe aparece em sua própria saída. Você pode desativá-lo passando a mesma opção acima para a JVM por meio do-J
switch:Sim,
jps
é um aplicativo Java.De um blog da Oracle :