说明:监视虚拟机的各种运行状态:类装载、内存、垃圾收集等运行数据。只用于Java进程或Java应用
格式:jstat [option] PID [interval] [count]
$ jstat -gcutil 2000 10 # 2秒打印一次,打印10次
$ jps –v # 找到java 进程 pid
参数:
option:
-class 查看类装载的信息
-gc 查看java堆的状况
-gccapacity 查看堆中各个区域的最小容量和最大容量
-gcutil 查看堆中各个区域已使用空间占其总空间的百分比
-gccause 与-gcutil相同,另外还输出了:导致上一次GC的原因和当前GC的原因
-gcnew 查看堆中新生代的状况
-gcnewcapacity 查看堆中新生代的最小容量和最大容量
-gcold 查看堆中老年代的状况
-gcoldcapacity 查看堆中老年代的最小容量和最大容量
-gcpermcapacity 查看堆中永久代的最小容量和最大容量
-gcmetacapacity 查看元数据空间的当前大小、最大容量和最小容量(jdk1.8)
interval:表示查询的间隔时间,单位:毫秒
count: 表示查询的次数,如果interval和count都省略,则默认为只查询一次
通用:
Minor GC(Young GC):
YGC: 进程从启动以来Minor GC的次数
YGCT:进程从启动以来Minor GC所花费的时间
Full GC:FGC表示次数,FGCT表示时间
FGC: 进程从启动以来Full GC的次数
FGCT:进程从启动以来Full GC所花费的时间
GCT: Minor GC和Full GC总共花费的时间
注:查看 JVM 是否回收垃圾频繁,主要根据 FGC 和 FGCT 来分析。上面的命令
$ jstat -gcutil 8842 2000 10 该命令对进程 8842 进行监控收集信息,每 2 秒收集一次,供收集 10 次。此时看 FGC 这一列,最新收集的信息排在最上面。用下一行的数字,减去上一行的数字,可得知每2秒内垃圾收集的次数(可换算成1秒的次数),若是回收垃圾频繁,则需要进一步分析原因。可能的原因是内存泄露、程序中有创建大对象的代码、相关配置设置的阈值较小。再进一步查找问题,可以打印出具体的堆栈信息,通过堆栈定位到具体的代码进行分析。