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

查询示例:

jstat的用法(虚拟机统计信息监视工具)

选项option表示用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况,主要有如下选项:

-class  监视类加载、卸载数量、总空间以及类装载所耗费的时间

-gc  监视Java堆状况,包括Eden区、2个Survivor区、老年代、元空间等的容量,已用空间,垃圾收集时间合计等信息

-gccapacity  监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间

-gcutil  监视内容与-gc基本相同,但输出主要关注一使用空间占总空间的百分比

-gccause  与-gcutil功能一样,但是会额外输出导致上一次垃圾收集产生的原因

-gcnew  监视新生代垃圾收集情况

-gcnewcapacity  监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间

-gcold  监视老年代垃圾收集情况

-gcoldcapacity  监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间

-gcmetacapacity  输出原空间使用到的最大、最小空间

-compiler  输出即时编译器编译过的方法、耗时等信息

-printcompilation  输出已经被即时编译的方法