六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 38|回复: 0

jstat命令(Java Virtual Machine Statistics Monitoring Tool)

[复制链接]

升级  72.35%

801

主题

801

主题

801

主题

探花

Rank: 6Rank: 6

积分
2447
 楼主| 发表于 2013-1-26 14:10:34 | 显示全部楼层 |阅读模式


JDK内置工具使用
一、javah命令(CHeaderandStubFileGenerator)
二、jps命令(JavaVirtualMachineProcessStatusTool)
三、jstack命令(JavaStackTrace)
四、jstat命令(JavaVirtualMachineStatisticsMonitoringTool)
五、jmap命令(JavaMemoryMap)
六、jinfo命令(JavaConfigurationInfo)
七、jconsole命令(JavaMonitoringandManagementConsole)
八、jvisualvm命令(JavaVirtualMachineMonitoring,Troubleshooting,andProfilingTool)
九、jhat命令(JavaHeapAnalyseTool)
十、Jdb命令(TheJavaDebugger)
1、介绍

Jstat是JDK自带的一个轻量级小工具。全称“JavaVirtualMachinestatisticsmonitoringtool”,它位于javabin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heapsize和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。
它主要是用来显示GC及PermGen相关的信息,如果对GC不怎么了解,先看这篇文章:http://blog.csdn.net/fenglibing/archive/2011/04/13/6321453.aspx,否则其中即使你会使用jstat这个命令,你也看不懂它的输出。

2、命令格式

jstat[generalOption|outputOptionsvmid[interval[s|ms][count]]]
3、参数说明

1)、generalOption:单个的常用的命令行选项,如-help,-options,-version
2)、outputOptions:一个或多个输出选项,由单个的statOption选项组件,可以-t,-h,and-J选项配合使用。
statOption:
-classOption
-compilerOption
-gcOption
-gccapacityOption
-gccauseOption
-gcnewOption
-gcnewcapacityOption
-gcoldOption
-gcoldcapacityOption
-gcpermcapacityOption
-gcutilOption
-printcompilationOption
注:其中最常用的就是-gcutil选项了,因为他能够给我们展示大致的GC信息。
Option:指的是vmid、显示间隔时间及间隔次数等
vmidVM的进程号,即当前运行的java进程号
interval间隔时间,单位为秒或者毫秒
count打印次数,如果缺省则打印无数次
3)、jstat命令输出参数说明
S0—Heap上的Survivorspace0区已使用空间的百分比
S0CS0当前容量的大小
S0US0已经使用的大小
S1—Heap上的Survivorspace1区已使用空间的百分比
S1CS1当前容量的大小
S1US1已经使用的大小
E—Heap上的Edenspace区已使用空间的百分比
ECEdenspace当前容量的大小
EUEdenspace已经使用的大小
O—Heap上的Oldspace区已使用空间的百分比
OCOldspace当前容量的大小
OUOldspace已经使用的大小
P—Permspace区已使用空间的百分比
OCPermspace当前容量的大小
OUPermspace已经使用的大小
YGC—从应用程序启动到采样时发生YoungGC的次数
YGCT–从应用程序启动到采样时YoungGC所用的时间(单位秒)
FGC—从应用程序启动到采样时发生FullGC的次数
FGCT–从应用程序启动到采样时FullGC所用的时间(单位秒)
GCT—从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC
4、使用示例

示例1)、

示例2

图中同时打印了younggcfullgc的总次数、总耗时。而,每次younggc消耗的时间,可以用相间隔的两行YGCT相减得到。每次fullgc消耗的时间,可以用相隔的两行FGCT相减得到。例如红框中表示的第一行、第二行之间发生了1younggc,消耗的时间为0.252-0.2520.0秒。
常驻内存区(P)的使用率,始终停留在64.21%左右,说明常驻内存没有突变,比较正常。如果younggcfullgc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低。但也不能说明一定没有内存泄露。
示例3)、

以上,介绍了Jstat按百分比查看gc情况的功能。其实,它还有功能,例如加载类信息统计功能、内存池信息统计功能等,那些是以绝对值的形式打印出来的,比较少用,在此就不做介绍。
示例4)、jstat-classpid:显示加载class的数量,及所占空间等信息。

示例5)、jstat-compilerpid:显示VM实时编译的数量等信息。

示例就不一一例举,有兴趣的可以自己尝试尝试。
<!--EndFragment-->
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表