基础故障处理工具
jps:虚拟机进程状态工具
可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及进程ID。
常用命令:
-
jps -l 输出主类的全名,如果执行的是jar包,则输出jar包的路径
示例:jps -l 进程ID jar包名称
4803 project-manager-1.2.0.jar 12199 invoice-center-1.2.0.jar
-
jps -v 输出虚拟机进程启动时的JVM参数
示例:jps -lv 进程ID jar包名称 JVM参数
4803 project-manager-1.2.0.jar -Xms256M -Xmx1G 12199 invoice-center-1.2.0.jar -Xms256m -Xmx1g
-
jps -m 输出虚拟机进程启动时传递给主类main()方法的参数
示例:jps -lvm 进程ID jar包名称 main方法参数 JVM参数
9788 main-1.0.12.jar --spring.profiles.active=uat -Xms512m -Xmx512m 32670 eureka-server.jar --spring.profiles.active=uat -Xms64m -Xmx128m
jstat:虚拟机统计信息监视工具
jstat是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中类加载、内存、垃圾收集、即使编译等运行时数据。
常用命令:
-
jstat -gcutil xxx(进程ID)
示例:
jstat -gcutil 32670 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 53.60 60.84 66.02 95.38 92.95 8909 42.751 5 0.723 43.475
S0表示survivor0区的内存占用大小情况、S1表示survivor1区的占用内存大小情况
E表示Eden区的使用情况、O表示老年代的使用情况、M表示元空间的使用情况
YGC表示程序运行以来minor GC发生的次数、YGCT表示minor GC的总耗时
FGC表示程序运行以来full GC发生的次数、FGCT表示full GC的总耗、GCT表示所有垃圾收集的总耗时
jinfo:Java配置信息工具
jinfo的作用是实时查看和调整虚拟机各项参数。
常用命令:jinfo -flag CMSInitiatingOccupancyFraction 32670
jmap:Java内存映像工具
jmap命令用于生成堆转储快照。
常用命令:jmap -dump:format=b,file=eclipse.bin xxx(pid)
说明:生成一个正在运行的eclipse的堆转储快照文件,这个文件可以用一些可视化工具进行分析。
jhat:虚拟机堆转储快照工具
JDK提供jhat命令与jmap搭配使用,来分析jmap生成的堆转储快照。该命令只用在服务器生分析堆转储快照,实际生产活动中~~不推荐这个命令进行分析堆转储文件~~。
jstack:Java堆栈跟踪工具
jstack命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿,如线程间死锁、死循环、请求外部资源挂起等导致需要较长时间才能相应的情况。
常用命令: jstack -l xxx(pid)
可视化故障处理工具
JHSDB:基于服务性代理的调试工具
JHSDB是一款基于服务性代理实现的进程外调试工具。服务性代理是HotSpot虚拟机中一组用于映射Java虚拟机运行信息的、主要基于Java语言实现的API集合。
JConsole:Java监视于管理控制台
JConsole是一款基于JMX的可视化监控、管理工具。它的主要功能是通过JMX的MBean对系统进行信息收集和参数动态调整。
启动:通过JDK/bin目录下的jconsole.exe启动,或者通过命令行工具输入jconsole进行启动
主要功能:
- 内存监控:“内存”页签的作用相当于可视化的jstat命令,用于监控被收集器管理的虚拟机内存的变化趋势。
- 线程监控:“线程”页签的作用相当于可以是的jstack命令,线程停顿的时候可以使用这个页签的功能进行分析。
VisualVM:多合一故障处理工具
VisualVM是功能最强大的运行监视和故障处理程序之一,除了常规的运行监视、故障处理外,还提供其他方面的能力,譬如性能分析。它还有一个很大的优点,就是不需要被监视的程序基于特殊的Agent去运行,因为它的通用性很强,对应用程序实际性能的影响也比较小,可以直接应用在生产环境中。
\