1.jps
用于查看当前虚拟机进程及信息,类似UNIX的ps命令,使用频率很高。
2.jstat
用于监视虚拟机各种运行状态信息的命令行工具,包括类装载,内存,垃圾收集,JIT编译等运行数据。
3.jinfo
可用于读写虚拟机的各项参数,其实是有jsp -v可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被显式指定的,就要使用jinfo -flag来查看,使用jinfo -flag [+|-] name 或者 jinfo -flag name=value来增删修改虚拟机参数值。
4.jmap
主要用于生成堆转储快照(获得dump文件)(-dump),还可以用于查询finalize执行队列(-finalizerinfo),查询java堆和永久代的详细信息(空间使用率,当前使用哪种收集器时)。
5.jhat
jhat用于与jmap搭配使用,用于分析jmap生成的堆转储快照(jhat内置微型http/html服务器,分析结过可在浏览器中查看)。
一般来说除非没有别的工具了,不然不会直接使用jhat去分析dump文件,原因:
- 一般不会再部署应用程序的服务器上直接分析dump文件(因为分析工作耗时且消耗硬件),即使可以也尽量把dump文件复制到其他机器上进行分析(但都丢到其他机器上了,就没必要受命令行工具限制)
- jhat分析功能比较简陋
6.jstack
用于生成虚拟机当前时刻的线程快照(当前虚拟机内每一条线程正在执行方法堆栈的集合),线程快照用于定位线程出现长时间停顿的原因(线程死锁,死循环,活锁等),因为使用jstack查看各个线程的调用堆栈就知道线程再后台干嘛,在等待什么资源。