一 点睛
jps(Java Process Status):显示指定系统内所有的 HotSpot 虚拟机进程(查看虚拟机进程信息),可用于查询正在运行的虚拟机进程。
说明:对于本地虚拟机进程来说,进程的本地虚拟机 ID 与操作系统的进程 ID 是一致的,是唯一的。
基本使用语法为:jps [options] [hostid]
我们还可以通过追加参数,来打印额外的信息。
options 参数
-
-q:仅仅显示 LVMID(local virtual machine id),即本地虚拟机唯一 id。不显示主类的名称等
-
-l:输出应用程序主类的全类名,如果进程执行的是 jar 包,则输出 jar 完整路径
-
-m:输出虚拟机进程启动时传递给主类 main() 的参数
-
-v:列出虚拟机进程启动时的 JVM 参数。比如:-Xms20m -Xmx50m 是启动程序指定的 jvm 参数。
说明:以上参数可以综合使用。
补充:如果某 Java 进程关闭了默认开启的 UsePerfData 参数(即使用参数 -XX:-UsePerfData),那么 jps 命令(以及下面介绍的 jstat)将无法探知该 Java 进程。
hostid 参数
RMI 注册表中注册的主机名。如果想要远程监控主机上的 java 程序,需要安装 jstatd。
对于具有更严格的安全实践的网络场所而言,可能使用一个自定义的策略文件来显示对特定的可信主机或网络的访问,尽管这种技术容易受到 IP 地址欺诈攻击。
如果安全问题无法使用一个定制的策略文件来处理,那么最安全的操作是不运行 jstatd 服务器,而是在本地使用 jstat 和 jps 工具。
二 实战
1 代码
package chaper02;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String info = scanner.next();
}
}
2 基本测试
# 基本使用
F:\svn\19_byzb_back\branches\JVMDemo3>jps
10656 Jps
2756
3640 ScannerTest
# 使用帮助
F:\svn\19_byzb_back\branches\JVMDemo3>jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
# -q:只显示进程id
F:\svn\19_byzb_back\branches\JVMDemo3>jps -q
18832
2756
3640
# -l:输出应用程序主类的全类名
F:\svn\19_byzb_back\branches\JVMDemo3>jps -l
2756
3640 chaper02.ScannerTest
6108 sun.tools.jps.Jps
3 main 带参数测试
# -m:输出虚拟机进程启动时传递给主类 main() 的参数
F:\svn\19_byzb_back\branches\JVMDemo3>jps -m
2644 ScannerTest hello
2756
16744 Jps -m
11692 Launcher D:/ProgramFiles/JetBrains/IDEA/lib/jna.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-builder-support-3.6.1.jar;D:/ProgramFiles/JetBrains/IDEA/lib/httpclient-4.5.12.jar;D:/ProgramFiles/JetBrains/IDEA/lib/slf4j-api-1.7.2
5.jar;D:/ProgramFiles/JetBrains/IDEA/plugins/java/lib/jps-builders.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-resolver-provider-3.6.1.jar;D:/ProgramFiles/JetBrains/IDEA/lib/lz4-java-1.7.1.jar;D:/ProgramFiles/JetBrains/IDEA/lib/ann
otations.jar;D:/ProgramFiles/JetBrains/IDEA/plugins/java/lib/jps-builders-6.jar;D:/ProgramFiles/JetBrains/IDEA/lib/log4j.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-resolver-util-1.3.3.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-r
esolver-impl-1.3.3.jar;D:/ProgramFiles/JetBrains/IDEA/lib/oro-2.0.8.jar;D:/ProgramFiles/JetBrains/IDEA/lib/idea_rt.jar;D:/ProgramFiles/JetBrains/IDEA/lib/plexus-utils-3.2.0.jar;D:/ProgramFiles/JetBrains/IDEA/lib/netty-buffer-4.1.47.
Final.jar;D:/ProgramFiles/JetBrains/IDEA/lib/netty-resolver-4.1.47.Final.jar
4 虚拟机启动参数测试
# -v:列出虚拟机进程启动时的 JVM 参数。
F:\svn\19_byzb_back\branches\JVMDemo3>jps -v
4880 Jps -Dapplication.home=D:\ProgramFiles\Java\jdk1.8.0_251 -Xms8m
2756 exit -Xms128m -Xmx1911m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapD
umpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -javaagent:C:\Users\Public\.jetbrains\jetbrains-agent-v3.2.0.de72.619 -Djb.
vmOptionsFile=C:\Users\chengqiuming\AppData\Roaming\JetBrains\IntelliJIdea2020.1\idea64.exe.vmoptions -Djava.library.path=D:\ProgramFiles\JetBrains\IDEA\jbr\\bin;D:\ProgramFiles\JetBrains\IDEA\jbr\\bin\server -Didea.jre.check=true -
Dide.native.launcher=true -Didea.paths.selector=IntelliJIdea2020.1 -XX:ErrorFile=C:\Users\chengqiuming\java_error_in_idea_%p.log -XX:HeapDumpPath=C:\Users\chengqiuming\java_error_in_idea.hprof
12040 ScannerTest -Xms100m -Xmx100m -javaagent:D:\ProgramFiles\JetBrains\IDEA\lib\idea_rt.jar=54227:D:\ProgramFiles\JetBrains\IDEA\bin -Dfile.encoding=UTF-8
19372 Launcher -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=F:/svn/19_byzb_back/branches/JVMDemo3 -Dpreload.config.path=C:/Users/chengqiuming/AppData/Roaming/Je
tBrains/IntelliJIdea2020.1/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Dio.netty.initialSeedUniquifier=2451929110092469614 -Dfile.encoding=GBK -Duser.language=zh -Duser.country=CN -Didea.paths.selector=Inte
lliJIdea2020.1 -Didea.home.path=D:\ProgramFiles\JetBrains\IDEA -Didea.config.path=C:\Users\chengqiuming\AppData\Roaming\JetBrains\IntelliJIdea2020.1 -Didea.plugins.path=C:\Users\chengqiuming\AppData\Roaming\JetBrains\IntelliJIdea202
0.1\plugins -Djps.log.dir=C:/Users/chengqiuming/AppData/Local/JetBrains/IntelliJIdea2020.1/log/build-log -Djps.fallback.jdk.home=D:/ProgramFiles/JetBrains/IDEA/jbr -Djps.fallback.jdk.version=11.0.6 -Dio.netty.noUnsafe=true -Djava.io
.tmpdir=C:/Users/chengqiuming/AppData/Local/JetBrains/IntelliJIdea2020.1/compile-server/jvmdemo3_5f0f9f71/_temp
5 综合使用
# 综合使用
F:\svn\19_byzb_back\branches\JVMDemo3>jps -lmv
2756 exit -Xms128m -Xmx1911m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapD
umpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -javaagent:C:\Users\Public\.jetbrains\jetbrains-agent-v3.2.0.de72.619 -Djb.
vmOptionsFile=C:\Users\chengqiuming\AppData\Roaming\JetBrains\IntelliJIdea2020.1\idea64.exe.vmoptions -Djava.library.path=D:\ProgramFiles\JetBrains\IDEA\jbr\\bin;D:\ProgramFiles\JetBrains\IDEA\jbr\\bin\server -Didea.jre.check=true -
Dide.native.launcher=true -Didea.paths.selector=IntelliJIdea2020.1 -XX:ErrorFile=C:\Users\chengqiuming\java_error_in_idea_%p.log -XX:HeapDumpPath=C:\Users\chengqiuming\java_error_in_idea.hprof
12040 chaper02.ScannerTest hello -Xms100m -Xmx100m -javaagent:D:\ProgramFiles\JetBrains\IDEA\lib\idea_rt.jar=54227:D:\ProgramFiles\JetBrains\IDEA\bin -Dfile.encoding=UTF-8
19372 org.jetbrains.jps.cmdline.Launcher D:/ProgramFiles/JetBrains/IDEA/lib/jna.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-builder-support-3.6.1.jar;D:/ProgramFiles/JetBrains/IDEA/lib/httpclient-4.5.12.jar;D:/ProgramFiles/JetBrain
s/IDEA/lib/slf4j-api-1.7.25.jar;D:/ProgramFiles/JetBrains/IDEA/plugins/java/lib/jps-builders.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-resolver-provider-3.6.1.jar;D:/ProgramFiles/JetBrains/IDEA/lib/lz4-java-1.7.1.jar;D:/ProgramFi
les/JetBrains/IDEA/lib/annotations.jar;D:/ProgramFiles/JetBrains/IDEA/plugins/java/lib/jps-builders-6.jar;D:/ProgramFiles/JetBrains/IDEA/lib/log4j.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-resolver-util-1.3.3.jar;D:/ProgramFiles/
JetBrains/IDEA/lib/maven-resolver-impl-1.3.3.jar;D:/ProgramFiles/JetBrains/IDEA/lib/oro-2.0.8.jar;D:/ProgramFiles/JetBrains/IDEA/lib/idea_rt.jar;D:/ProgramFiles/JetBrains/IDEA/lib/plexus-utils-3.2.0.jar;D:/ProgramFiles/JetBrains/IDE
A/lib/netty-buffer-4.1.47.Final.jar;D:/ProgramFiles/JetBrains/IDEA/lib/netty-resolver-4.1.47.Final.jar -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=F:/svn/19_by
zb_back/branches/JVMDemo3 -Dpreload.config.path=C:/Users/chengqiuming/AppData/Roaming/JetBrains/IntelliJIdea2020.1/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Dio.netty.initialSeedUniquifier=245192911009246
9614 -Dfile.encoding=GBK -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2020.1 -Didea.home.path=D:\ProgramFiles\JetBrains\IDEA -Didea.config.path=C:\Users\chengqiuming\AppData\Roaming\JetBrains\IntelliJIdea20
20.1 -Didea.plugins.path=C:\Users\chengqiuming\AppData\Roaming\JetBrains\IntelliJIdea2020.1\plugins -Djps.log.dir=C:/Users/chengqiuming/AppData/Local/JetBrains/IntelliJIdea2020.1/log/build-log -Djps.fallback.jdk.home=D:/ProgramFiles
/JetBrains/IDEA/jbr -Djps.fallback.jdk.version=11.0.6 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/chengqiuming/AppData/Local/JetBrains/IntelliJIdea2020.1/compile-server/jvmdemo3_5f0f9f71/_temp
2604 sun.tools.jps.Jps -lmv -Dapplication.home=D:\ProgramFiles\Java\jdk1.8.0_251 -Xms8m
6 -XX:-UsePerfData关闭监控测试
# 以 -XX:-UsePerfData 启动 ScannerTest,无法监控到 ScannerTest 进程
F:\svn\19_byzb_back\branches\JVMDemo3>jps
5520 Jps
18084 Launcher
2756