1. 主要命令监控工具用途
| 名称 | 主要作用 | 
| jps | JVM Process Status Tool, 显示指定系统内所有HotSpot虚拟机进程 | 
| jstat | JVM Statistics Monitoring Tool,用于手机HotSpot虚拟机各方面的运行数据 | 
| jinfo | Configuration Info for Java,显示虚拟机配置信息 | 
| jmap | Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件) | 
| jhat | JVM Heap Dump Browser, 用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果 | 
| jstack | Stack Trace for Java, 显示虚拟机的线程快照 | 
1.1 jps 虚拟机进程状况工具
jps [options] [hostid]
| 选项 | 作用 | 
| -q | 只输出LVMID,省略主类的名称 | 
| -m | 输出虚拟机进程启动时传递给主类main()函数的参数 | 
| -l | 输出主类的全名,如果进程执行的是jar包,输出jar路径 | 
| -v | 输出虚拟机进程启动时JVM参数 | 
1.2 jstat 虚拟机统计信息监控工具
jstat [options vmid [interval[s|ms]] [count]]
| 选项 | 作用 | 
| -class | 监视类装载、卸载数量、总空间以及类装载所耗费的时间 | 
| -gc | 监视Java堆状况,包括Eden区、两个survivor、老年代、永久代等的容量、已用空间、GC时间合计等信息 | 
| -gccapacity | 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间内 | 
| -gcutil | 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 | 
| -gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 | 
| -gcnew | 监视新生代GC状况 | 
| -gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 | 
| -gcold | 监视老年代GC状况 | 
| -gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 | 
| -gcpermcapacity | 输出永久代使用到的最大、最小空间 | 
| -compiler | 输出JIT编译器编译过的方法、耗时等信息 | 
| -printcompilation | 输出已经被JIT编译的方法 | 
1.3 jinfo Java配置信息工具
jinfo [option] pid
1.4 jmap Java内存映像工具
jmap [option] vmid
| 选项 | 作用 | 
| -dump | 生成Java堆转储快照。格式为:-dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活的对象 | 
| -finalizerinfo | 显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux/Solaris平台下有效 | 
| -heap | 显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效 | 
| -histo | 显示堆中对象统计信息,包括类、实例数量、合计容量 | 
| -permstat | 以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效 | 
| -F | 当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效 | 
1.5 jhat 虚拟机堆转储快照分析工具
1.6 jstack Java堆栈跟踪工具
jstack [option] vmid
| 选项 | 作用 | 
| -F | 当正常输出的请求不被响应时,强制输出线程堆栈 | 
| -I | 除堆栈外,显示关于锁的附加信息 | 
| -m | 如果调用到本地方法的话,可以显示C/C++的堆栈 | 
2. JDK可视化工具
2.1 JConsole Java监控与管理控制台
2.2 VisualVm 多合一故障处理工具