jps,会为目标系统上的当前用户列出每个已检测的Java虚拟机。
jps主要选择有四个
选项 | 简述 |
---|---|
-q | 只输出JVM ID(进程id),忽略主类名 |
-m | 输出虚拟机启动时传递给主类main()方法的参数 |
-l | 输出主类的全名,如果是Jar包输出Jar路径 |
-v | 输出虚拟机进程启动时的JVM参数 |
demo代码如下
/**
* 学习jps
* @author 编程还未
* @since 2022/4/18 20:56
**/
public class TestJps {
public static void main(String[] args) {
System.out.println("hello world");
try {
Thread.currentThread().setName("Test JPS");
//等待一分钟,方便使用jps命令
TimeUnit.MINUTES.sleep(1);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
在IDEA启动上述代码,或者用CMD
或PowerShell
等命令行启动。然后新开一个命令行窗口,输入下面的命令
-
jps
(base) PS G:\Project\highway-resources> jps 22140 TestJps
-
jps -q
(base) PS G:\Project\highway-resources> jps -q 19608 20744 23592 26072 3848 25500
-
jps -m
我们在IDEA运行设置里面加一些参数,
图片红框位置,加上hi jps
。然后启动。
或者命令行启动的时候加入参数:java TestJps hi jps
(base) PS G:\Project\highway-resources> jps -m
19608 RemoteMavenServer
23592
26072
17068 Jps -m
19660 TestJps hi jps
-
jps -l
(base) PS G:\Project\highway-resources> jps -l 19608 org.jetbrains.idea.maven.server.RemoteMavenServer 20744 com.program_highway.jps.TestJps 3848 org.jetbrains.jps.cmdline.Launcher 20556 jdk.jcmd/sun.tools.jps.Jps
-
jps -v
(base) PS G:\Project\highway-resources> jps -v 26028 TestJps -javaagent:G:\JetBrains\apps\IDEA-U\ch-1\221.5080.210\lib\idea_rt.jar=61436:G:\JetBrains\apps\IDEA-U\ch-1\221.5080.210\bin -Dfile.encoding=UTF-8
这个内容比较多,如果是用IDEA启动的话,会打印IDEA自身的JVM参数。
贴一部分小部分,简单讲解一下
23592 -Xmx256m -Xms8m -Xss256k
- 23492:进程ID
- -Xmx256m:JVM堆最大为256m
- -Xms8m:JVM堆初始大小为8m
- -Xss256k:JVM栈的大小256k
关于JVM的内容,可以看我这篇博文了解。面试必备——图文剖析JVM的运行时数据区_编程还未的博客-优快云博客