JVM命令jps

本文详细介绍了JVM的jps命令,其功能类似于Linux中的ps命令,用于查看Java进程信息。文章解释了jps命令的基本用法,包括如何使用不同的选项来获取更详细的进程信息,如进程ID、主类全名、方法参数等。

 
jps是JVM的一个常用命令,类似linux中的ps命令。jps是查看java进程信息的命令;ps是查看linux系统中进程的命令
 
格式
     jps [ options ] [ hostid ]
 
参数说明
     options
          -q   只输出java进程的进程id
          -l    输出java进程的进程id和main方法的类全名
          -m  输出java进程的进程id和main方法的入参
          -v   输出java进程的进程id和jvm的入参
          -V   输出java进程的进程id和通过flag文件传入jvm的参数
     hostid
          命令对应的服务器ip,默认不加参数,代码查看本机
 
实例
     1 只输出进程id,其他后面命令都会带出这个信息
        
SZ-sten:Desktop sten$ jps -q
84257
83468

 

     2 输出进程的类全称
     
SZ-sten:Desktop sten$ jps -l
84278 sun.tools.jps.Jps
83468 org.jetbrains.jps.cmdline.Launcher

    

     3 输出方法的入参
     
SZ-lizhiliang:Desktop sten$ jps -m
83468 Launcher /Applications/IntelliJ IDEA.app/Contents/lib/javac2.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jna.jar:/Applications/IntelliJ IDEA.app/Contents/lib/snappy-in-java-0.3.1.jar:/Applications/IntelliJ IDEA.app/Contents/lib/openapi.jar:/Applications/IntelliJ IDEA.app/Contents/lib/oromatcher.jar:/Applications/IntelliJ IDEA.app/Contents/lib/trove4j.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jps-builders.jar:/Applications/IntelliJ IDEA.app/Contents/lib/nanoxml-2.2.3.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jgoodies-forms.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jsr166e.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jdom.jar:/Applications/IntelliJ IDEA.app/Contents/lib/asm-all.jar:/Applications/IntelliJ IDEA.app/Contents/lib/picocontainer.jar:/Applications/IntelliJ IDEA.app/Contents/lib/protobuf-2.5.0.jar:/Applications/IntelliJ IDEA.app/Contents/lib/rt/jps-plugin-system.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jna-platform.jar:/Applications/Intell
84298 Jps -m

 

  4 输出方法的入参和方法的类的全称
SZ-lizhiliang:Desktop sten$ jps -ml
83468 org.jetbrains.jps.cmdline.Launcher /Applications/IntelliJ IDEA.app/Contents/lib/javac2.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jna.jar:/Applications/IntelliJ IDEA.app/Contents/lib/snappy-in-java-0.3.1.jar:/Applications/IntelliJ IDEA.app/Contents/lib/openapi.jar:/Applications/IntelliJ IDEA.app/Contents/lib/oromatcher.jar:/Applications/IntelliJ IDEA.app/Contents/lib/trove4j.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jps-builders.jar:/Applications/IntelliJ IDEA.app/Contents/lib/nanoxml-2.2.3.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jgoodies-forms.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jsr166e.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jdom.jar:/Applications/IntelliJ IDEA.app/Contents/lib/asm-all.jar:/Applications/IntelliJ IDEA.app/Contents/lib/picocontainer.jar:/Applications/IntelliJ IDEA.app/Contents/lib/protobuf-2.5.0.jar:/Applications/IntelliJ IDEA.app/Contents/lib/rt/jps-plugin-system.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jna-platform.jar:/Applications/Intell
84318 sun.tools.jps.Jps -ml

 

 

转载于:https://www.cnblogs.com/sten/p/5704592.html

### 常用 JVM 命令列表 以下是常用的 JVM 命令及其功能说明: #### 1. jstat `jstat` 是用于监控 JVM 运行时状态的工具,可以显示类加载、内存使用、垃圾回收等信息。其基本语法为: ```bash jstat [option] LVMID [interval] [count] ``` 例如,查看某个进程的垃圾回收统计信息: ```bash jstat -gcutil <LVMID> 1000 5 ``` 这里 `<LVMID>` 是目标 JVM 的进程 ID[^1]。 #### 2. jinfo `jinfo` 用于查看和修改 JVM 的配置参数。可以通过以下命令查看或设置 JVM 参数: - 查看所有 JVM 标志: ```bash jinfo -flags <LVMID> ``` - 查看所有 Java 系统属性: ```bash jinfo -sysprops <LVMID> ``` - 修改最大堆内存大小(需要权限): ```bash jinfo -flag MaxHeapSize=2g <LVMID> ``` 请注意,并非所有 JVM 标志都可以在运行时动态修改[^2]。 #### 3. jmap `jmap` 用于生成 Java 堆的 Dump 文件,帮助分析内存使用情况。常用命令包括: - 生成堆 Dump 文件: ```bash jmap -dump:format=b,file=heapDump.hprof <LVMID> ``` - 查看堆内存分布: ```bash jmap -heap <LVMID> ``` 生成的 Dump 文件可以进一步通过 `jhat` 或其他工具进行分析[^3]。 #### 4. jhat `jhat` 用于解析 Java 堆 Dump 文件并启动一个 Web 服务器,便于通过浏览器查看内存中的对象分布。使用方法如下: ```bash jhat heapDump.hprof ``` 启动后,可以通过浏览器访问指定端口查看分析结果。 #### 5. jstack `jstack` 用于生成线程转储文件,帮助分析线程死锁或性能瓶颈。常用命令: ```bash jstack <LVMID> ``` 该命令输出当前 JVM 中的所有线程及其状态信息。 #### 6. jps `jps` 用于列出当前系统中所有的 Java 进程及其主类名称。常用命令: ```bash jps -l ``` 该命令会返回类似以下的结果: ``` 19483 com.wind.ssm.java8.test.JHatTest 19507 sun.tools.jps.Jps ``` #### 7. jcmd `jcmd` 是一个多功能命令行工具,支持发送诊断命令到正在运行的 JVM。例如: - 触发一次完整的垃圾回收: ```bash jcmd <LVMID> GC.run ``` - 查看 JVM 的帮助信息: ```bash jcmd <LVMID> help ``` #### 8. 方法区相关命令 方法区通常位于持久代(Permanent Generation),可以通过以下参数调整其大小: - 设置持久代最小值和最大值: ```bash -XX:PermSize=<size> -XX:MaxPermSize=<size> ``` 从 JDK 8 开始,持久代被元空间(Metaspace)取代,可以通过以下参数调整: ```bash -XX:MetaspaceSize=<size> -XX:MaxMetaspaceSize=<size> ``` 这些参数可以通过 `jinfo` 或 JVM 启动参数进行配置[^4]。 --- ### 示例代码 以下是一个生成堆 Dump 文件并分析的完整流程: ```bash # 步骤1:启动 Java 程序 java -Xms40m -Xmx40m -XX:NewSize=20M -XX:MaxNewSize=20M -XX:SurvivorRatio=2 -XX:MaxTenuringThreshold=15 JHatTest # 步骤2:获取 Java 进程 ID jps -l # 步骤3:生成堆 Dump 文件 jmap -dump:format=b,file=heapDump.hprof <LVMID> # 步骤4:解析 Dump 文件 jhat heapDump.hprof ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值