第4章-虚拟机性能监控与故障处理工具

介绍了随JDK发布的6个命令行工具及两个可视化的故障处理工具,灵活使用这些工具可以给问题处理带来很大的便利。

JDK的命令行工具

jps

命令: jps[options][hostid]

jstat

虚拟机统计信息监视工具。
显示信息:类装载、内存、垃圾收集、JIT编译等运行数据
本地命令:jstat[option vmid[interval [s | ms][count]]]
远程命令:[protocol: ][//]lvmid[@hostname[:port]/servername]
Alt text

案例:
Alt text

jinfo

Java配置信息工具。
作用:实时查看和调整虚拟机各项参数。
命令:jinfo[option]pid
案例:
Alt text

jmap

Java内存映像工具。
作用:

  • 用于生成堆转储快照(headump或dump文件)
  • 可以查询finalize执行队列、Java堆和永久代的详细信息(空间使用率、当前用的哪种收集器等)

命令:jmap[option]vmid
Alt text
案例:
Alt text

jhat

虚拟机堆转存储快照分析工具,与jmap搭配使用。
Alt text

jstack

Java堆栈跟踪工具。
作用:用于生成虚拟机当前时刻的线程快照(threadump、javacore文件)。
命令:jstack[option]vmid
Alt text
案例:
Alt text

JDK可视化工具

JConsole和VisualVM。

JConsole

Java监视与管理控制台,是一种基于JMX的可视化监视、管理工具。

  1. 启动JConsole
    $ JDK/bin jconsole.exe
    Alt text

  2. 内存监控
    Alt text

VisualVM

多合故障处理工具,是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序。
优点:

  • 不需要被监视的程序基于特殊的Agen运行
  • 可以做插件扩展(jps、jinfo、dump-jmap、jhat)
  • 离线快照
  • 有很强的向下兼容能力(JDK1.4.2)
  1. 插件安装
    Alt text

  2. 生成、浏览堆转储快照

  • 应用程序->右键->堆dump
  • 应用程序->双击->监视->堆dump
  1. 分析程序性能
  2. Btrace动态日志跟踪
  • Btrace是一个很有趣的VisualVM插件,可以独立运行。
  • 作用:在不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSwap技术动态加入原本并不存在的调试代码。

Alt text
Alt text
Alt text