介绍了随JDK发布的6个命令行工具及两个可视化的故障处理工具,灵活使用这些工具可以给问题处理带来很大的便利。
JDK的命令行工具
jps
命令: jps[options][hostid]
jstat
虚拟机统计信息监视工具。
显示信息:类装载、内存、垃圾收集、JIT编译等运行数据
本地命令:jstat[option vmid[interval [s | ms][count]]]
远程命令:[protocol: ][//]lvmid[@hostname[:port]/servername]
案例:
jinfo
Java配置信息工具。
作用:实时查看和调整虚拟机各项参数。
命令:jinfo[option]pid
案例:
jmap
Java内存映像工具。
作用:
- 用于生成堆转储快照(headump或dump文件)
- 可以查询finalize执行队列、Java堆和永久代的详细信息(空间使用率、当前用的哪种收集器等)
命令:jmap[option]vmid
案例:
jhat
虚拟机堆转存储快照分析工具,与jmap搭配使用。
jstack
Java堆栈跟踪工具。
作用:用于生成虚拟机当前时刻的线程快照(threadump、javacore文件)。
命令:jstack[option]vmid
案例:
JDK可视化工具
JConsole和VisualVM。
JConsole
Java监视与管理控制台,是一种基于JMX的可视化监视、管理工具。
启动JConsole
$ JDK/bin jconsole.exe内存监控
VisualVM
多合故障处理工具,是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序。
优点:
- 不需要被监视的程序基于特殊的Agen运行
- 可以做插件扩展(jps、jinfo、dump-jmap、jhat)
- 离线快照
- 有很强的向下兼容能力(JDK1.4.2)
插件安装
生成、浏览堆转储快照
- 应用程序->右键->堆dump
- 应用程序->双击->监视->堆dump
- 分析程序性能
- Btrace动态日志跟踪
- Btrace是一个很有趣的VisualVM插件,可以独立运行。
- 作用:在不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSwap技术动态加入原本并不存在的调试代码。