jstat的用法(虚拟机统计信息监视工具)
jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、即时编译器等运行时数据,由于服务器一般都是没有GUI界面的,因此可以使用此工具定位性能问题。
jstat命令格式为:
jstat [option vmid [interval [s|ms] [count]]]
对于命令格式中的VMID需要注意的是:如果是本地虚拟机进程,VMID就是LVMID,对于远程虚拟机进程,那么VMID的格式就是:
[protocol:] [//]vmid [@hostname[:port] /servername]
参数interval和count代表查询间隔和查询次数,如果省略了,则表示只查询一次。假设每2000毫秒查询进程16656新生代垃圾收集情况,一共查询10次,则命令应当是:
jstat -gcnew 16656 2000 10
查询示例:
选项option表示用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况,主要有如下选项:
-class 监视类加载、卸载数量、总空间以及类装载所耗费的时间
-gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、元空间等的容量,已用空间,垃圾收集时间合计等信息
-gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil 监视内容与-gc基本相同,但输出主要关注一使用空间占总空间的百分比
-gccause 与-gcutil功能一样,但是会额外输出导致上一次垃圾收集产生的原因
-gcnew 监视新生代垃圾收集情况
-gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
-gcold 监视老年代垃圾收集情况
-gcoldcapacity 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
-gcmetacapacity 输出原空间使用到的最大、最小空间
-compiler 输出即时编译器编译过的方法、耗时等信息
-printcompilation 输出已经被即时编译的方法