虚拟机性能监控与故障处理工具
1.JDK命令行工具
1.jps
虚拟机进程状态工具
常用的几个参数:
-l 输出Java应用程序的main class的完整包
-q 仅显示pid,不显示其它任何相关信息
-m 输出传递给main方法的参数
-v 输出传递给JVM的参数。在诊断JVM相关问题的时候,这个参数可以查看JVM相关参数的设置
2.jstat
虚拟机统计信息监视工具
是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地活着远程虚拟机进程中的磊装载。内存。垃圾收集。jit编译等运行数据。只提供纯文本控制台环境的服务器上,他将是运行期定位虚拟机性能问题的首选参数。
C:\Program Files\Java\jdk1.8.0_91\bin>jstat -gcutil 1676
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 100.00 53.66 80.08 91.20 81.37 72 2.443 0 0.000 2.443
C:\Program Files\Java\jdk1.8.0_91\bin>jstat -gc 1676
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
0.0 6144.0 0.0 6144.0 83968.0 53248.0 172032.0 137768.9 173184.0 157951.9 23168.0 18851.1 72 2.443 0 0.000 2.443
堆内存 = 年轻代 + 年老代 + 永久代
年轻代 = Eden区 + 两个Survivor区(From和To)
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGCT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时
3 jinfo
java配置信息工具
jinfo的作用是实时的查看和调整虚拟机各项参数。使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被现实制定的参数的系统默认值,就需要用jinfo -flag了。
观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数
实例:jinfo 2083
其中2083就是java进程id号,可以用jps得到这个id号。
输出内容太多了,不在这里一一列举,大家可以自己尝试这个命令。
4 jmap Java内存映像工具
jmap(memory map for java )命令用于生成堆转储快照。
jmap(Memory Map)和 jhat(Java Heap Analysis Tool)
jmap用来查看堆内存使用状况,一般结合jhat使用。
5.jhat 虚拟机堆转储快照分析工具
6.jstack:java堆栈跟踪工具
jstack命令用于还是呢工程虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。身材个好难过线程快照的主要目的是定位线程出现长时间停顿的原因。如县城建死锁。死循环。请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。
线程出现停顿,通过调用jstack来查看哥哥县城的调用堆栈,就知道没有相应的线程好到底在后台做什么。
JDK可视化工具
1.jconsole
a.在命令行执行jconsole
b. 选择要监控的进程
c.包含概览 内存 线程 类 vm该要 mbean等信息。