jstat 监控虚拟机各种运行状态信息的工具
jstat [option vmid [interval [s|ms] [count]] ]
参数interval 和 count 表示查询间隔 和 次数,如果省略这两个参数,说明只查询一次。如需要每250ms 查询一次进程 2764 垃圾收集状况,一共查询20次,命名应该是: jstat -gc 2764 250 20
jmap
该命令用于生成堆转储快照(一般称为 heapdump 或 dump文件)。jmap的作用并不仅仅是为了获取dump文件,它还可以查询 finalize 执行队列,java堆和永久代的详细信息;
jstack:java堆栈跟踪工具(stack trace for java):该命令用于生成jvm 当前时刻的线程快照(一般称为 threaddump 或 javacore 文件)。
线程快照就是当前jvm 内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的是 定位线程出现长时间停顿的原因,如线程间死锁,死循环,请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因;
jstack命令格式:jstack [option] vimd
jstack 工具主要选项
可视化工具 jconsole visualVM
jconsole
内存监控:内存标签相当于可视化的 jstat命令,用于监控受收集器管理的虚拟机内存(java堆和永久代)的变化趋势;
线程监控:线程标签的功能相当于可视化的jstack命令,遇到线程停顿时可以使用这个标签进行监控分析;
visualVM
多合一故障处理工具(目前为止,它是随JDK发布的功能最强大的运行监视和故障处理程序)
显示虚拟机进程以及进程的配置,环境信息(jps,jinfo);
监视应用程序的CPU, GC, 堆, 方法区以及线程的信息(jstat、jstack);
dump 以及分析堆转储快照(jmap,jhat);
方法级的程序运行性能分析,找出被调用最多,运行时间最长的方法;
离线程序快照,收集程序的运行时配置,线程dump,内存dump 等信息建立一个快照,可以将快照发送开发者处进行bug 反馈;
其他plugins 的无限可能性;(在对应用程序进行检测时,还需要加载相应的插件)