jps

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其 id。
jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。

使用方法:

在当前命令行下打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打) 。

  1. $ jps -help
  2. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
  3. usage: jps [-help]
  4. jps [-q] [-mlvV] [<hostid>]
  5. Definitions:
  6. <hostid>: <hostname>[:<port>]

这些参数的含义在 JDK 官方文档上有,名字叫 Java平台,标准版工具参考(opens new window)
比如这里的 jps 工具

  1. # 查看当前的 java 进程,左侧是进程 ID,右侧是名称
  2. $ jps
  3. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
  4. 25168 RemoteMavenServer36
  5. 14292
  6. 26264 Jps
  7. 13116 MonitorJvmDemoApplication

常用参数

-l参数

-l:显示完整的名称,显示应用程序main类的完整程序包名称或应用程序JAR文件的完整路径名

  1. $ jps -l
  2. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
  3. 25168 org.jetbrains.idea.maven.server.RemoteMavenServer36
  4. 14292
  5. 26104 sun.tools.jps.Jps
  6. 13116 com.example.monitorjvmdemo.MonitorJvmDemoApplication

-v参数

-v 显示输出传递给JVM的参数

  1. $ jps -v
  2. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
  3. 13552 Launcher -Dfile.encoding=UTF-8 -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=E:/anin/study/monitor-jvm-demo
  4. -Dpreload.config.path=C:/Users/11197/.IntelliJIdea2019.3/config/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Djava.net.preferIPv4Stack=true -Dio.netty.initialSe
  5. edUniquifier=6617817904139369125 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2019.3 -Didea.home.path=D:\soft\IntelliJ IDEA 2019.3.3 -Did
  6. ea.config.path=C:\Users\11197/.IntelliJIdea2019.3/config -Didea.plugins.path=C:\Users\11197/.IntelliJIdea2019.3/config/plugins -Djps.log.dir=C:/Users/11197/.IntelliJIdea2019.3/system/lo
  7. g/build-log -Djps.fallback.jdk.home=D:/soft/IntelliJ IDEA 2019.3.3/jbr -Djps.fallback.jdk.version=11.0.5 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/11197/.IntelliJIdea2019.3/sys
  8. tem/compile-server/monitor-jvm-demo_74f219e1/_temp_ -Djps.backward.ref.index.builder=true -Dkotlin.incremental.com
  9. 8980 -Dfile.encoding=UTF-8 exit -Xms2048m -Xmx2048m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCanonPre
  10. fixCache=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djdk.attach.allowAttachSelf=t
  11. rue -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -javaagent:D:\soft\IntelliJ IDEA 2019.3.3\pj\jetbrains-agent.jar -Djb.vmOptionsFile=C:\Users\11197\.IntelliJIde
  12. a2019.3\config\idea64.exe.vmoptions -Djava.library.path=D:\soft\IntelliJ IDEA 2019.3.3\jbr\\bin;D:\soft\IntelliJ IDEA 2019.3.3\jbr\\bin\server -Didea.jre.check=true -Dide.native.launche
  13. r=true -Didea.paths.selector=IntelliJIdea2019.3 -XX:ErrorFile=C:\Users\11197\java_error_in_idea_%p.log -XX:HeapDumpPath=C:\Users\11197\java_error_in_idea.hprof
  14. 18552 Jps -Dfile.encoding=UTF-8 -Dapplication.home=D:\soft\java\jdk1.8.0_45 -Xms8m
  15. 17948 MonitorJvmDemoApplication -Dfile.encoding=UTF-8 -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:60191,suspend=y,server=n -Dvisualvm.id=20541122639200 -XX:TieredStopAtLevel=1
  16. -Xverify:none -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -ja
  17. vaagent:C:\Users\11197\.IntelliJIdea2019.3\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8

远程查看进程

列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099(前提是远程服务器提供jstatd服务)

  1. jps 192.xxx.xxx.xxx