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