Jps 工具使用

1、JPS 简介

       JPS(全称:Java Virtual Machine Process Status Tool)。安装JDK后在%JAVA_HOME%/bin目录下面自带的一个工具。用来查看计算机上面运行的JAVA进程。(如下图)  在Linux机器上我一般使用的ps -aux|grep java。

   该工具只有16KB,所占内存很小。但是他会调用%JAVA_HOME%/lib/tools.jar里面的JAVA方法,来实现功能。

 这样的话,我们可以在自己的程序内部调用这个jar包的方法。实现自己对服务器的JVM监控。

2、JPS使用

命令格式:jps [ options ] [ hostid ]

options 包含 选项:qmlvV

hostid 用于连接其他机器


jps -q 只显示进程号

C:\Users\Winston>jps -q
13476
2964
15224
9800

 跟windows自带的任务管理器里面的PID就行比较,发现是一致的。此处windows进程里面少了一个。主要是少了我们当前运行的jps 命令。他也会发起一个java进程。


jps -m 显示传递给main方法的参数。针对嵌入式JVM可能输出null.

C:\Users\Winston>jps -m
11284 Test1 testjps
13476 Test1
15224 org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar -os win32 -ws win32 -arch x86_64 -showsplash D:\ProgramFiles\eclipsejee\\plugins\org.eclipse.epp.package.common_4.7.3.20180405-1200\splash.bmp -launcher D:\ProgramFiles\eclipsejee\eclipse.exe -name Eclipse --launcher.library D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834\eclipse_1630.dll -startup D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.appendVmargs -exitdata 2c10_118 -product org.eclipse.epp.package.jee.product -vm C:\ProgramData\Oracle\Java\javapath\javaw.exe -vmargs -Dosgi.requiredJavaVersion=1.8 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx1024m -jar D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
9800 org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar -os win32 -ws win32 -arch x86_64 -showsplash D:\ProgramFiles\eclipsejee\\plugins\org.eclipse.epp.package.common_4.7.3.20180405-1200\splash.bmp -launcher D:\ProgramFiles\eclipsejee\eclipse.exe -name Eclipse --launcher.library D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834\eclipse_1630.dll -startup D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.appendVmargs -exitdata 2310_110 -product org.eclipse.epp.package.jee.product -vm C:\ProgramData\Oracle\Java\javapath\javaw.exe -vmargs -Dosgi.requiredJavaVersion=1.8 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx1024m -jar D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
14988 Jps -m

可以看到上图的 11284进程后面 有显示刚才传入的参数testjps


jps -l 显示运行程序主类的包名,或者运行程序jar包的完整路径

C:\Users\Winston>jps -l
11284 com.winston.jvm.Test1
13476 com.winston.jvm.Test1
13416 sun.tools.jps.Jps
15224 D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
9800 D:\ProgramFiles\eclipsejee\\plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar

jps -v 显示传递给JVM的参数

C:\Users\Winston>jps -v
11284 Test1 -XX:+PrintGCDetails -XX:+UseSerialGC -XX:PretenureSizeThreshold=3M -Dfile.encoding=UTF-8
13476 Test1 -XX:+PrintGCDetails -XX:+UseSerialGC -XX:PretenureSizeThreshold=3M -Dfile.encoding=UTF-8
14920 Jps -Dapplication.home=C:\Program Files\Java\jdk1.8.0_152 -Xms8m
15224 org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar -Dosgi.requiredJavaVersion=1.8 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx1024m
9800 org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar -Dosgi.requiredJavaVersion=1.8 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx1024m

C:\Users\Winston>

jps -V  显示主类名或者jar包名

C:\Users\Winston>jps -V
11284 Test1
13476 Test1
14532 Jps
15224 org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
9800 org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar

官方文档:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html

 

<think>我们正在回答用户关于如何使用jps命令的问题。用户已经提供了引用[1]和[2],它们都介绍了jps命令的使用。我们需要整合这些信息,并按照用户的要求,以清晰的结构回答。 用户问题:请问Java中如何正确使用jps命令来查看运行中的虚拟机进程? 回答结构: 1. 解释jps命令的作用和适用场景。 2. 说明使用jps命令的前提条件(如安装JDK,配置环境变量)。 3. 详细介绍jps命令的基本用法,包括常用选项(如-l, -m, -v等)。 4. 给出具体示例,展示命令输出。 5. 可能的问题和解决方法(如无法看到Java进程的原因)。 6. 生成相关问题。 注意:引用[1]和[2]的内容,但不要直接复制,而是用自己的话总结,并在适当位置标注引用。 另外,用户要求使用中文回答,并且按照系统指令,数学公式使用LaTeX格式(但本问题可能不涉及数学公式,所以可以忽略)。同时,在回答末尾生成相关问题。 我们开始组织答案。</think>### Javajps命令使用指南 `jps`(Java Process Status Tool)是JDK自带的基础诊断工具,用于快速查看运行中的Java虚拟机进程。以下是详细使用方法: --- #### **1. 前置条件** - **安装JDK**:确保系统已安装JDK(建议JDK 8+) - **配置环境变量**:将JDK的`bin`目录加入系统PATH ```bash # Linux/Mac示例 export PATH=$PATH:$JAVA_HOME/bin # Windows示例(系统环境变量) 添加 %JAVA_HOME%\bin 到Path变量 ``` --- #### **2. 基础命令** | 命令 | 作用 | 输出示例 | |------|------|----------| | `jps` | 列出进程ID和主类简称 | `1234 Jps`<br>`5678 MyApp` | | `jps -l` | 显示完整主类名 | `1234 sun.tools.jps.Jps`<br>`5678 com.example.MyApp` | | `jps -v` | 显示JVM启动参数 | `5678 MyApp -Xms512m -Xmx1024m` | | `jps -m` | 显示main()传入参数 | `5678 MyApp arg1 arg2` | | `jps -q` | 仅显示进程ID | `1234`<br>`5678` | > **注**:组合使用示例:`jps -lmv` 同时显示完整类名、参数和JVM配置[^1][^2] --- #### **3. 典型使用场景** **场景1:定位Java进程PID** ```bash $ jps -l 29876 org.apache.catalina.startup.Bootstrap # Tomcat进程 30172 sun.tools.jps.Jps ``` **场景2:检查JVM参数** ```bash $ jps -v 29876 Bootstrap -Djava.util.logging.config.file=/conf/logging.properties -Xmx1024m ``` **场景3:容器内诊断** ```bash docker exec -it <容器ID> jps -l # 查看Docker容器内Java进程 ``` --- #### **4. 常见问题解决** - **问题:命令未找到** 解决方案:检查`JAVA_HOME/bin`是否加入PATH,或使用绝对路径: ```bash $ $JAVA_HOME/bin/jps -l ``` - **问题:无法查看其他用户的进程** 解决方案:Linux/Mac下使用`sudo`: ```bash sudo -u <用户名> jps -l ``` - **问题:未显示预期进程** 原因:目标进程可能未通过标准JVM启动(如自定义类加载器) 替代方案:使用`ps aux | grep java`辅助排查[^2] --- #### **5. 与其他工具联动** ```mermaid graph LR jps(定位PID) --> jstack(线程分析) jps --> jstat(GC监控) jps --> jmap(内存分析) ``` > **提示**:在性能分析时,先用`jps`获取PID,再用`jstack`/`jmap`深入诊断[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值