2023-05-24

说明:监视虚拟机的各种运行状态:类装载、内存、垃圾收集等运行数据。只用于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秒的次数),若是回收垃圾频繁,则需要进一步分析原因。可能的原因是内存泄露、程序中有创建大对象的代码、相关配置设置的阈值较小。再进一步查找问题,可以打印出具体的堆栈信息,通过堆栈定位到具体的代码进行分析。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容