JDK监控和故障处理工具

jps(JVM Process Status Tool)虚拟机进程状况工具

列出正在运行的虚拟机进程,并显示虚拟机主类名称,以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier),对于本地虚拟机进程来说,LVMID与操作系统的进程ID(PID)是一致的。
选项参数:
选项
作用
-q
只输出LVMID
-m
输出虚拟机进程启动时传递给主类main函数的参数
-l
输出主类的全名,如果进程执行的是jar包,输出jar的路径
-v
输出虚拟机进程启动的jvm参数
当然,以上参数可以和linux命令联合使用,例如查出erp项目配置的jvm参数可以采用
jps -v | grep erp
附上官方文档: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html

jstat(JVM Statistics Monitoring Tool)虚拟机统计信息监视工具

是用于监视虚拟机各种运行状态信息的命令行工具。可以显示本地或者远程虚拟机中的类装载、内存、垃圾收集、JIT编译等运行数据。
命令格式:
jstat [option vmid [interval [s|ms] [count]]]
注意:如果是本地虚拟机进程,VMID和LVMID是一致的,如果是远程虚拟机进程,VMID格式应该是:
[protocol:][//] lvmid [@hostname[:port]/servername]
选项参数option可选:-class、-gc、-gccapacity、-gcutil、-gccause、-gcnew、-gcnewcapacity、-gcold、-gcoldcapacity、-gcpermcapacity(jdk8后修改为:gcmetacapacity)、-compiler、-printcompilation。
注意:输出的单位是KB
JDK监控和故障处理工具_第1张图片
附上官方文档: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
中文博客: https://blog.csdn.net/zhaozheng7758/article/details/8623549

jinfo(Configuration Info for Java):java配置信息工具

实地查看虚拟机各项参数,包括默认的和显式设置的。也可以在java程序运行时动态地修改虚拟机参数,但并不是所有的参数都支持动态修改(重启失效)
jinfo可以输出当前 jvm 进程的全部参数和系统属性。
jinfo -flag name pid 可以输出对应的jvm参数设置
jinfo -flag [+|-]name pid 开启或者关闭对应名称的参数
jinfo -flag name=value pid 修改指定参数的值。
jinfo -flags pid 输出全部的参数
附上官方文档: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jinfo.html
可参考: https://www.jianshu.com/p/8d8aef212b25

jmap(Memory Map for Java):java内存映像工具

用于生成堆转储快照(heapdump或者dump文件) 线上慎用。如果不使用jmap命令,
1.可以配置-XX:+HeapDumpOnOutOfMemoryError参数让虚拟机在OOM异常出现后自动生成dump文件。
2.通过-XX:+HeapDumpOnCtrlBreak参数则可以使用【Ctrl】+【Break】让虚拟机生成dump文件。
3.又或者在linux下通过kill -3命令也能拿到dump文件。
选项参数:
选项
作用
实例
-dump
生成堆转储快照dump文件。执行的过程中为了保证dump的信息是可靠的,所以 会暂停应用, 线上系统慎用。
jmap -dump:[live,]format=b,file= pid
live指定是否只dump当前存活的对象,如果不指定,将会dump所有的对象,包括待回收的对象
例如:
jmap -dump:live,format=b,file=/data/logs/heap.hprof 2176
-heap
显示java堆详细信息,如使用哪种垃圾回收器、参数设置、分代状况等。
jmap -heap pid
JDK监控和故障处理工具_第2张图片

-histo

 (常用)

显示堆中对象统计信息,包括类、实例数量、合计容量
jmap -histo[:live] pid |less
JDK监控和故障处理工具_第3张图片
-finalizerinfo
显示等待Finalizer线程执行finalize方法的对象。
jmap -finalizerinfo pid
JDK监控和故障处理工具_第4张图片
-clstats
打印类加载器信息

jhat(JVM Heap Analyse Tool)虚拟机堆转储快照分析工具

用途:是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。
一般实际开发中,很少使用jhat来直接对内存dump文件进行分析

jstack(Stack Trace for Java) java堆栈跟踪工具

用于生成虚拟机当前时刻的线程正在执行的方法堆栈的集合。 主要目的是定位线程长时间停顿的原因,如线程死锁、死循环、请求外部资源导致的长时间等待。线程出现停顿时通过jstack来查看各个线程调用堆栈,可以知道没有响应的线程到底在后台做什么事情,或者在等待什么资源。
命令格式:jstack [option] vmid
选项参数:
选项
作用
-F
强制dump线程堆栈信息. 用于进程hung住, jstack 命令没有响应的情况
-l
打印锁的额外信息
-m
同时打印java和本地(native)线程栈信息,m是mixed mode的简写
可参考:
http://www.tianshouzhi.com/api/tutorials/jvm/351
https://www.cnblogs.com/chenpi/p/5377445.html

你可能感兴趣的:(jvm,jvm)