本文内容来自《深刻理解Java虚拟机》,主要是自身学习,用于记录重点,方便回忆,复习。对应《深刻理解Java虚拟机》第四章,JDK提供的经常使用工具。java
JDK的bin目录下,用于查询LVMID(列出虚拟机进程号)linux
参数:bash
-q 只显示进程号。 函数
-m 输出启动时传递给主类main()函数的参数。工具
-l 输出主类的全名,若是进程执行的jar包,则输出jar包路径。学习
-v 输出虚拟机启动时JVM参数spa
能够显示本地或者远程虚拟机进程中类的装载、内存、垃圾收集、JIT编译等运行数据。线程
格式:3d
jstat option vmid [interval [count]]复制代码
若是查询本地,vmid为jps命令中查出来的LVMID,若是远程,则vmid为code
[protocol:][//]lvmid[@localhost[:port]/servername]复制代码
interval为监控的间隔时间,count为监控的次数。
经常使用option:
-class 监视类装载、卸载数量、总空间、类装载所消耗的时间
-gc 监控Java堆情况,各区使用量,gc次数,gc时间等信息
-gcutil 做用通-gc,显示的数据为百分比。
-gcnew 新生代GC状况
-gcold 老年代GC状况
例子:
S0、S1:Survivor区、E Edent区、O:老年区、YGC:MinorGC次数、YGCT:MinorGC的时间、FGC:Full GC次数、FGCT:Full GC的时间、GCT:GC总时间
除生成dump文件外,还可查询finalize执行队列、Java堆信息。
-dump 生成Java堆转存储快照,格式以下
jmap -dump:format=b,file=filename 3039
复制代码
-finalizeinfo 只能linux平台下使用,显示真正等待F-Queue中等待执行finalize方法的对象。
-heap 只能linux平台下使用,显示Java堆详细信息。
附:
-XX:HeapDumpOnOutOfMemoryError参数、让虚拟机在OOM异常时自动生成dump文件
用于生成虚拟机当前时刻的线程快照(threaddump、javacore文件)
jstack [option] vmid
参数:
-F 正常输出的请求不被响应时,强制输出线程堆栈。
-l 除堆栈外,显示关于锁的附加信息。
-m 若是调用本地方法的话,能够显示C/C++的堆栈。
启动命令文件为JavaHome/bin/jconsole,可用于监控内存、cpu、线程、是否死锁等。
启动命令文件为 JavaHome/bin/jvisualvm