Java命令行工具学习--jps详解


title: Java命令行使用

本文我们将对java内置命令行使用分析,这些命令行在java程序优化中扮演着重要的角色。

Jps

功能

jps(Java Virtual Machine Process Status Tool)是JDK1.5提供的用来显示当前用户的所有Java进程的命令行工具,一般用于在Linux平台上查找我们需要分析的Java进程。
注意:

 1 本文所有的内容是以Linux为例
 2 jps命令只能显示当前用户的Java进程

实现原理

Java进程启动之后会在 /tmp/目录下生成一个:hsperfdata_{user}格式的文件夹。

$ ll /tmp/ | grep hs
drwxr-xr-x  2 nlp    nlp         240 2月  27 09:47 hsperfdata_nlp
drwxr-xr-x  2 root   root         40 12月 14 13:11 hsperfdata_root
drwxr-xr-x  2 yarn   yarn         40 9月  20 16:51 hsperfdata_yarn
$ ls /tmp/hsperfdata_*
/tmp/hsperfdata_nlp:
10166  10173  10230  10249  10277  10306  10418  12358  15099  19957  2285  26235  30118  4394  9361

/tmp/hsperfdata_root:

/tmp/hsperfdata_yarn:

所以我们一旦将/tmp/hsperfdata_{user}文件删除,就无法使用jps命令

使用方法

jps -q

只打印java的进程号

$ jps -q 
34149
33410
32250

jps -m

显示给main函数传递的参数

$ jps -m
29264 SparkSubmit --master yarn --deploy-mode cluster --class TestClass --num-executors 10 --executor-memory 4g --executor-cores 2 test.jar
26990 Jps -m

jps -l

显示程序的完整(包名)类名或者完整路径jar包。

$ jps -l
15099 org.apache.catalina.startup.Bootstrap
13656 /data/app/jar/HDFS2Hbase.jar
20289 sun.tools.jps.Jps

jps -v

显示jvm参数

$ jps -v
32250  -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Xverify:none -XX:ErrorFile=/Users/fchen/java_error_in_idea_%p.log -XX:HeapDumpPath=/Users/fchen/java_error_in_idea.hprof -Xbootclasspath/a:../lib/boot.jar -Xms128m -Xmx750m -XX:ReservedCodeCacheSize=240m -XX:+UseCompressedOops -Djb.vmOptionsFile=/Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions -Didea.java.redist=jdk-bundled -Didea.home.path=/Applications/IntelliJ IDEA.app/Contents -Didea.executable=idea -Didea.paths.selector=IntelliJIdea2016.2
52662 Jps -Denv.class.path=.:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home -Xms8m
51474 Launcher -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=/Users/fchen/Project/Sohu/app_mine_personal_recommend_offline -Dpreload.config.path=/Users/fchen/Library/Preferences/IntelliJIdea2016.2/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Djava.net.preferIPv4Stack=true -Dio.netty.initialSeedUniquifier=3768357630763464563 -Dfile.encoding=UTF-8 -Djps.file.types.component.name=FileTypeManager -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2016.2 -Didea.home.path=/Applications/IntelliJ IDEA.app/Contents -Didea.config.path=/Users/fchen/Library/Preferences/IntelliJIdea2016.2 -Didea.plugins.path=/Users/fchen/Library/Application Support/IntelliJIdea2016.2 -Djps.log.dir=/Users/fchen/Library/Logs/IntelliJIdea2016.2/build-log -Djps.fallback.jdk.home=/Applications/IntelliJ IDEA.app/Contents/jre/jdk/Contents/Home/jre -Djps.fallback.jdk.version=1.8.0_112-release -Djava.io.tmpdir=/Users/fchen/Library/Caches/IntelliJId

你可能感兴趣的:(Java命令行工具学习--jps详解)