JVM(三)-性能监控与故障处理

参考:《深入理解JVM——高级特性与最佳实践》

一、概述

  • jsp 显示指定系统内所有的HotSpot虚拟机进程
  • jstat 用于手机hotSpot虚拟机个方面的运行数据
  • jinfo 显示虚拟机配置信息
  • jmap 生成虚拟机的内存快照(heapdump文件)
  • jhat 分析heapdump,建立一个HTTP/HTML服务器,让用户在浏览器上查看结果(少用)
  • jstack 显示线程快照(threadDump文件或javacore文件),定位线程出现长时间停顿的原因

二、详细解析

jps [option] [hostId]
jsp -q 只输出LVMID
jps -m 只输出启动时传给主类mian()参数
jps -l 输出主类全名,如果进程执行的是jar包,输出jar路径
jps -v 虚拟机进程启动时的JVM参数

jstat [option vmid [ interval[s|ms] [count] ] ]
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
本地的VMID同LVMID,远程的VMID格式[protocol :]=[//] lvmid [@hostname[port]/servername]
常用命令:
1、jstat -gcutil pid 统计gc信息统计。
2、 jstat -gc pid 可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
3、 jstat -gccapacity pid 可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
4、jstat -gcnew pid 年轻代对象的信息。
5、jstat -gcnewcapacity pid 年轻代对象的信息及其占用量
6、jstat -gcold pid old代对象的信息。
7、jstat -gcoldcapacity pid old代对象的信息及其占用量。
8、jstat -gcpermcapacity pid perm对象的信息及其占用量。
9、jstat -class pid 显示加载class的数量,及所占空间等信息。
10、jstat -compiler pid 显示VM实时编译的数量等信息。
11、jstat -printcompilation pid 当前VM执行的信息。

jinfo [option] pid
-flag 参看启动时未被指定的参数的系统默认值
-flag [+ | -] name 或 -flag name=value 修改运行期间可写的虚拟机参数值
-sysprops 打印System.properties()的内容

jmap [option] vmid
-dump:[live,]format=b,file= live说明只dump出存活的对象
-finalizerinfo 显示F-Queue中等待Finalizer线程执行finalize方法的对象
-heap java堆信息
-histo 堆中对象统计信息
-permstat 显示永久代内存状态
-F 虚拟机对-dump没有响应时强制生成dump快照

jstack [option] vmid
-F 强制输出
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用本地方法,可以显示C/C++堆栈

你可能感兴趣的:(JVM(三)-性能监控与故障处理)