jstat:虚拟机统计信息监视工具
jstat(JVM Statistics Monitoring Tool)
jstat是用于监视虚拟机各种运行状态信息的命令行工具。
它可以显示本地或者远程虚拟机进程中的类装载,内存,垃圾收集,JIT编译等运行数据,在没有GUI图形界面,只提供纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具
Jstat命令格式为
jstat [ option vmid [interval[s|ms] [count] ] ]
对于命令格式中的VMID与LVMID需要特别说明一下:如果是本地虚拟机进程,VMID和LVMID是一致的,如果是远程虚拟机进程,那VMID的格式应当是
[protocol:] [//] lvmid[@hostname [:port]/servername ]
参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次,
假设需要每250毫秒查询一次进程 2764 垃圾收集情况 ,一共查询20次 那么命令格式应该是:
jstat -gc 2764 250 20
选项option代表着用户希望查询的虚拟机信息,主要分为三类,类装载,垃圾收集,运行期编译状况
一些常见的option
-class | 监视类装载,卸载数量,总空间以及类装载所耗费的时间 |
-gc | 监视Java堆状况,包括Eden区,两个survivor,老年代,永久代等的容量,已用空间,GC时间合计等信息 |
-gccapacity | 监视内容与-gc基本相同,但输出主要关注的是Java堆各个区域使用到最大,最小空间 |
-gcutil | 监视内容与-gc基本相同,但输出主要关注的是已使用空间占总空间的百分比 |
-gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
-gcnew | 监视新生代GC状况 |
-gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大,最小空间 |
-gcold | 监视老年代GC状况 |
-gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大,最小空间 |
-gcpermcapacity | 输出永久代使用的最大,最小空间 |
-compiler | 输出JIT编译器编译过的方法,耗时等信息 |
-printcompilation | 输出已经被JIT编译的方法 |
同样我们还是可以通过 jstat -help 来查看 jstat提供的那些操作,以及如何使用
下面来一个例子
S0 -> Survior0
S1 -> Survior1
E -> Eden
O -> Old
P -> Permanent
YGC
FGC
and T
所以如果在没有GUI的情况下,我们看一通过jstat 来查看虚拟机的运行状况,然后通过运行状态来检测系统运行的状态。