JVM监控工具
Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下:
jps
用途:jps用来查看JVM里面所有进程的具体状态,包括进程ID,进程启动的路径等等。
常用参数:
-l: 输出完成的包名称;
-m: 输出程序的命令行输入参数;
-v: 输出完整的JVM参数。
jstack
用途:1)查看java程序崩溃生成core文件,获得core文件的javastack和nativestack的信息;2)查看正在运行的java程序的javastack和nativestack的信息:a) 查看运行的java程序呈现hung的状态;b) 跟踪Java的调用栈,剖析程序。
jinfo
用途:jinfo可观察运行中的java程序的运行环境参数:参数包括JavaSystem属性和JVM命令行参数;也可从core文件里面知道崩溃的Java应用程序的配置信息。
jstat
用途:jstat利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heapsize和垃圾回收状况的监控等等。
语法结构:
Usage:jstat-help|-options
jstat-<option>[-t][-h<lines>]<vmid>[<interval>[<count>]]
参数解释:
Options—选项,我们一般使用-gcutil查看gc情况
vmid—VM的进程号,即当前运行的java进程号
interval–间隔时间,单位为秒或者毫秒
count—打印次数,如果缺省则打印无数次
具体option参数如下:
-class:统计classloader行为信息
-compile:统计编译行为信息
-gc:统计jdkgc时heap信息
-gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件
-gcnew:统计gc时,新生代的情况
-gcnewcapacity:统计gc时,新生代heap容量
-gcold:统计gc时,老年区的情况
-gcoldcapacity:统计gc时,老年区heap容量
-gcpermcapacity:统计gc时,permanent区heap容量
-gcutil:统计gc时,heap情况
输出内容含义如下:
S0—Heap上的Survivorspace0区已使用空间的百分比
S1—Heap上的Survivorspace1区已使用空间的百分比
E—Heap上的Edenspace区已使用空间的百分比
O—Heap上的Oldspace区已使用空间的百分比
P—Permspace区已使用空间的百分比
YGC—从应用程序启动到采样时发生YoungGC的次数
YGCT–从应用程序启动到采样时YoungGC所用的时间(单位秒)
FGC—从应用程序启动到采样时发生FullGC的次数
FGCT–从应用程序启动到采样时FullGC所用的时间(单位秒)
GCT—从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
示例
实例使用1:
[root@localhostbin]#jstat-gcutil25444
S0S1EOPYGCYGCTFGCFGCTGCT
11.630.0056.4666.9298.491620.24860.3310.579
实例使用2:
[root@localhostbin]#jstat-gcutil2544410005
S0S1EOPYGCYGCTFGCFGCTGCT
73.540.0099.0467.5298.491660.25260.3310.583
73.540.0099.0467.5298.491660.25260.3310.583
73.540.0099.0467.5298.491660.25260.3310.583
孑然一身,隐入苍茫自然,自有一种孤独的意味;旅行,