序言

本系列文章旨在总结Java世界中常用的监控工具与故障排查工具,从而提高监控JVM/排查JVM相关问题的效率。如有疑问或需勘误,可在课程问答区或在课程QQ群提出_。
TIPS
本系列文章基于JDK 11编写。但总的来说,JDK 11和JDK 8的差异并不大,绝大多数对JDK 8也可适用。当遇到不适用的命令时,可前往对应命令中的JDK 8的地址查看相关文档即可。
JDK 11下载地址如下:

如果你同时安装了多个版本的JDK,可参考如下文章实现多个JDK版本共存:
macOS:https://blog.csdn.net/weixin_30532987/article/details/97463829
Windows:https://blog.csdn.net/FCY12345678/article/details/79563524

涵盖工具

JDK内置工具

内置工具包括了JDK中提供的常用监控工具以及故障排查工具,主要包括了:
监控工具,包括:

  • jps
  • jstat

故障排查工具,包括:

  • jinfo
  • jmap
  • jstack
  • jcmd
  • jhat
  • jhsdb

可视化工具,包括:

  • jhsdb
  • jconsole
  • VisualVM
  • JDK Mission Control

这些工具从可用性以及授权的不同,主要可以分为三类:

  • 正式支持工具:表示这类工具会有长期的技术支持,不同的平台、不同的JDK版本之间,这些工具可能会有一定差异,但总体来说还是比较兼容的。
  • 实验性工具:这类工具会被声明是实验性质,不会有技术支持,一些工具甚至可能会在某个新的JDK版本中突然就消失了。不过这些命令其实也都非常稳定,而且功能很强大,也是可以用在生产的。在实际项目中定位问题发挥的作用也非常的大,所以千万不要一看某个工具是实验性的就不学了。
  • 商业授权工具:指的主要是JMC以及JMC需要用到的JFR,这些工具在商业环境中使用的话是要付费的,但一般来说在个人开发环境中使用是免费的。

    第三方工具

  • Memory Analyzer Tool

  • JITWatch

当然除本系列列出的工具外,还有很多其他的工具,比如JProfiler等,但由于其收费的特性,故而本系列不去探讨。感兴趣的可以自行研究下,使用起来也都不难。