`

java jvm常用命令工具——jstat命令(Java Virtual Machine Statistics Monitoring Tool)

阅读更多

1.介绍

        Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:

        - 类的加载及卸载情况

        - 查看新生代、老生代及持久代的容量及使用情况

        - 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间

        - 查看新生代中Eden区及Survior区中容量及分配情况等

        jstat工具特别强大,它有众多的可选项,通过提供多种不同的监控维度,使我们可以从不同的维度来了解到当前JVM堆的使用情况。详细查看堆内各个部分的使用量,使用的时候必须加上待统计的Java进程号,可选的不同维度参数以及可选的统计频率参数。

        它主要是用来显示GC及PermGen相关的信息,如果对GC不怎么了解,先看这篇文章:http://blog.csdn.net/fenglibing/archive/2011/04/13/6321453.aspx,否则其中即使你会使用jstat这个命令,你也看不懂它的输出。

 

2.语法

        jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]

        generalOption - 单个的常用的命令行选项,如-help, -options, 或 -version。

        outputOptions -一个或多个输出选项,由单个的statOption选项组成,可以和-t, -h, and -J等选项配合使用。

        statOption:根据jstat统计的维度不同,可以使用如下表中的选项进行不同维度的统计,不同的操作系统支持的选项可能会不一样,可以通过-options选项,查看不同操作系统所支持选项,如:

        -h n

        用于指定每隔几行就输出列头,如果不指定,默认是只在第一行出现列头。

        -JjavaOption

        用于将给定的javaOption传给java应用程序加载器,例如,“-J-Xms48m”将把启动内存设置为48M。如果想查看可以传递哪些选项到应用程序加载器中,可以相看如下的文档:

        Linux and Solaris:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/java.html

        Windows: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/java.html

        -t n

        用于在输出内容的第一列显示时间戳,这个时间戳代表的是JVM开始启动到现在的时间(注:在IBM JDK5中是没有这个选项的)。

        vmid  - VM的进程号,即当前运行的java进程号。

        还有两个关于显示频率的选项:

        interval–间隔时间,单位可以是秒或者毫秒,通过指定s或ms确定,默认单位为毫秒。

        count-打印次数,如果缺省则打印无数次。

 

3.不同的统计维度(statOption)及输出说明

        -class


        -compiler


        -gc


        -gccapacity


        -gccause

        这个选项用于查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因,它比-gcutil会多出最后一次垃圾收集原因以及当前正在发生的垃圾收集的原因。


        -gcnew


        -gcnewcapacity


        -gcold


        -gcoldcapacity


        -gcpermcapacity

        从应用程序启动到采样时发生 Full GC 的次数


        -gcutil


        -printcompilation

 

4.使用示例

1).显示新生代、老生代及持代垃圾收集的情况


2).


        图中同时打印了young gc和full gc的总次数、总耗时。而每次young gc消耗的时间,可以用相间隔的两行YGCT相减得到。每次full gc消耗的时间,可以用相隔的两行FGCT相减得到。

        常驻内存区(P)的使用率,始终停留在4.59%左右,说明常驻内存没有突变,比较正常。如果young gc和full gc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低。当时,也不能说明一定没有内存泄露。

3).JVM中堆的垃圾收集情况的统计


        以上,介绍了Jstat按百分比查看gc情况的功能。其实,它还有功能,例如加载类信息统计功能、内存池信息统计功能等,那些是以绝对值的形式打印出来的,比较少用,在此就不做介绍。

4).jstat -class pid:显示加载class的数量,及所占空间等信息。

5).jstat -compiler pid:显示VM实时编译的数量等信息。


6).查看远程服务器上的GC情况。

        这个需要先在远程服务器上面开启jstatd服务,然后执行如下示例:

        jstat -gcutil 18272@the_ip:2021/jstatdName 1000

 

Oracle上关于Jstat的使用说明:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html

 

文章来源:http://blog.csdn.net/fenglibing/article/details/6411951

  • 大小: 16.9 KB
  • 大小: 8.1 KB
  • 大小: 10.9 KB
  • 大小: 27.7 KB
  • 大小: 27 KB
  • 大小: 6 KB
  • 大小: 40 KB
  • 大小: 18.2 KB
  • 大小: 14.4 KB
  • 大小: 15.7 KB
  • 大小: 14.5 KB
  • 大小: 23.6 KB
  • 大小: 11.4 KB
  • 大小: 3.1 KB
  • 大小: 6.4 KB
  • 大小: 4 KB
  • 大小: 2.3 KB
  • 大小: 2.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics