JVM的命令行工具

简单的记录一下,随时查阅

① jps 用于查询正在运行的JVM进程;可用jcmd -l 替代

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

options参数解释:

  • -l : 输出主类全名或jar路径
  • -q : 只输出LVMID
  • -m : 输出JVM启动时传递给main()的参数
  • -v : 输出JVM启动时显示指定的JVM参数

最常用示例:

jps -l 输出jar包路径,类全名
jps -m 输出main参数
jps -v 输出JVM参数

 

② jstat 可以实时显示本地(或远程)进程中类装载、内存状态、垃圾收集、JIT编译等信息

命令格式:jstat [option] pid [interval] [count]

interval是打印间隔时间(毫秒),count是打印次数(默认一直打印)

option参数解释:

  • -class ClassLoader的行为统计
  • -compiler JIT编译器行为统计
  • -gc 垃圾回收堆的行为统计
  • -gccapacity 各个垃圾回收代容量(young,old,perm)和他们相应的空间统计
  • -gcutil 垃圾回收统计概述
  • -gccause 垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因
  • -gcnew 新生代行为统计
  • -gcnewcapacity 新生代与其相应的内存空间的统计
  • -gcold 年老代和永生代行为统计
  • -gcoldcapacity 年老代行为统计
  • -gcpermcapacity 永生代行为统计
  • -printcompilation HotSpot编译方法统计

 

③ jinfo 用于查询当前运行JVM进程的参数和动态修改部分JVM参数的值

命令格式:jinfo [option] <pid>

options参数解释:

  • -flag <name> 打印指定名称的参数
  • -flag [+|-]<name> 打开或关闭参数
  • -flag <name>=<value> 设置参数
  • -flags 打印所有参数
  • -sysprops 打印系统配置
  • <no option> 打印上面两个选项

查看JVM参数和系统配置

jinfo 11666
jinfo -flags 11666
jinfo -sysprops 11666c

查看打印GC日志参数

jinfo -flag PrintGC 11666
jinfo -flag PrintGCDetails 11666

打开GC日志参数

# 关闭GC日志参数
jinfo -flag +PrintGC 11666
jinfo -flag +PrintGCDetails 11666
# 关闭GC日志参数
jinfo -flag -PrintGC 11666
jinfo -flag -PrintGCDetails 11666

查看那些参数可以使用jinfo命令来管理:

java -XX:+PrintFlagsFinal -version | grep manageable

 

④ jmap 用于显示当前Java堆和永久代的详细信息,导出dump文件

 导出内存映像文件

命令格式:
jmap [option] pid

自动导出
+XX:HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./

手动导出
jmap -dump:format=b,file=xxx.hprof [pid]
其中format=b代表用二进制导出
jmap -dump:live,format=b,file=xxx.hprof [pid]
live表示只查看存活的对象

-heap 显示java堆的详细信息,包括垃圾回收期、堆配置和分代信息等

-histo 显示堆中对象的统计信息,包括类名称,对应的实例数量和总容量

-permstat 统计持久代中各ClassLoader的统计信息

 

⑤ jstack 用于生成虚拟机当前的线程快照信息,包含每一条线程的堆栈信息

该命令通常用于定位线程停顿原因,当出现线程停顿时,可通过stack查看每个线程的堆栈信息,进而分析停顿原因。 

命令格式: 

jstack [ option ] pid

常用参数: 

  • -l 除堆栈外,显示锁的附加信息
  • -F 当请求不被响应时,强制输出线程堆栈
  • -m 混合模式,打印java和本地C++调用的堆栈信息

 

⑥ jhat 分析dump文件的命令,jhat内置了应用服务器,可以通过网页查看dump文件分析结果,不推荐使用

用法:jhat xxx.dump

 

参考资料:

1. JVM监控和调优常用命令工具总结 http://www.cnblogs.com/wxisme/

2. JVM调优的常见命令行 https://blog.csdn.net/fuqianming/article/details/88633445

posted @ 2021-12-27 17:34  bwqueen  阅读(109)  评论(0)    收藏  举报