JVM监控与故障处理工具

运用Jconsole监控JVM http://blog.csdn.net/lengyuhong/article/details/6200355
JConsole 使用总结 http://blog.csdn.net/ithomer/article/details/9923311
JMX连接tomcat(一)window篇 http://blog.csdn.net/liuxigiant/article/details/40341949
JMX连接tomcat(二)Linux篇 http://blog.csdn.net/liuxigiant/article/details/40344699
VisualVM 入门指南 https://visualvm.java.net/zh_CN/gettingstarted.html

原文:http://blog.ubone.com/blog/2015/01/04/jvmjian-kong-yu-gu-zhang-chu-li-gong-ju/

1. JDK命令行工具

1.1 jps http://docs.oracle.com/javase/7/docs/technotes/tools/share/jps.html

与Unix下的ps命令相似,可以列出正在运行的虚拟机进程并显示主类(main()函数所在类)类名以及LVMID(Local Virtual Machine Identifier)。LVMID与PID是一致的。命令格式:

jps [options] [hostid]

选项 用途
-q 只输出LVMID
-m 输出JVM启动时传递给主类main()函数的参数
-l 输出主类全名
-v 输出JVM启动时的JVM参数

1.2 jstat,虚拟机统计信息监视工具http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html

在理解Java性能调优中已经有描述。

1.3 jinfo, Java配置信息工具http://docs.oracle.com/javase/7/docs/technotes/tools/share/jinfo.html

用于实时查看和调整虚拟机各项参数。

1.4 jmap, Java内存映像工具http://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html

在理解Java性能调优中已经有描述。

1.5 jhat, 堆转储快照分析工具http://docs.oracle.com/javase/7/docs/technotes/tools/share/jhat.html

用于分析堆转储快照,内置一个微型HTTP服务器,分析结果后可在浏览器中查看。但这个工具并不常用。

1.6 jstack, Java堆栈跟踪工具http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstack.html

用于生成虚拟机当前时刻的线程快照(threaddump),即当前每一条线程正在执行的方法堆栈集合。主要目的是定位线程出现长时间停顿的原因,如死锁、死循环、请求外部资源等。

当线程出现停顿时,通过jstack查看各线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么。

选项 用途
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用本地方法的话,显示C/C++堆栈

2. JDK的可视化工具

2.1 JConsole

基于JMX的可视化监视、管理工具。直接通过集令后运行jconsole。

2.2 VisualVM http://visualvm.java.net/,多合一故障处理工具

VisualVM Is Designed For You:

Application Developer: Monitor, profile, take thread dumps, browse heap dumps
System Administrator: Monitor and control Java applications across the entire network
Java Application User: Create bug reports containing all the necessary information