jstat用于见识虚拟机各种运行状态信息的命令行工具,它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了存文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具;
jstat命令格式:jstat option vmid interval(s|ms) count
option:代表虚拟机需要查询的虚拟机信息,主要分为3类:类装载,垃圾收集和运行期编译状况;
vmid:虚拟机进程id,如果是本地虚拟机进程,VMID与lvmid是一直的,如果是远程虚拟机进程,那vmid格式为 protocol://lvmid[@hostname[:port]/servername];
interval:查询间隔,隔多少秒/毫秒查询一次;
count:查询次数;
如果省略interval和count则表示只查询一次;
例如:jstat -gc 16381 10 2 表示每10毫秒查询一次进程16381的gc情况,总共查询2次;
option:
| option | 说明 |
| -------- |:------:|
| -class | 监视类装载、卸载数量、总空间以及类装载所耗费的时间 |
| -gc | 监视Java堆状况,包括Eden区、两个servivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息|
| -gccapacity | 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间 |
| -gcutil | 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比|
| -gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因|
| -gcnew | 监视新生代gc状况 |
| -gcnewcapacity| 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 |
| -gcold | 监视老年代gc状况 |
| -gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 |
| -gcpermcapacity | 输出永久代使用高的最大、最小空间 |
| -compiler | 输出JIT编译器编译过的方法、耗时等信息 |
| -printcompilation | 输出已经被JIT编译的方法 |
输出的各个参数描述信息可参考:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html#class_option