一 点睛
使用 JVM 的命令行工具或组合能帮您获取目标 Java 应用性能相关的基础信息,但它们存在下列局限。
-
1.无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。
-
2.要求用户登录到目标 Java 应用所在的宿主机上,使用起来不是很方便。
-
3.分析数据通过终端输出,结果展示不够直观。
为此,JDK 提供了一些内存泄漏的分析工具,如 jconsole,jvisualvm 等,用于辅助开发人员定位问题,但是这些工具很多时候并不足以满足快速定位的需求。所以这里介绍的工具相对多一些、丰富一些。
二 JDK 自带的工具
-
jconsole:JDK 自带的可视化监控工具。查看 Java 应用程序的运行概况、监控堆信息、永久区(或元空间)使用情况、类加载情况等。
-
Visual VM:Visual VM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机上运行的基于 Java 技术的应用程序的详细信息。
-
JMC:Java Mission Control,内置 Java Flight Recorder。能够以极低的性能开销收集 Java 虚拟机的性能数据。
三 第三方工具
-
MAT:MAT(Memory Analyzer Tool)是基于 Eclipse 的内存分析工具,是一个快速、功能丰富的 Java heap 分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。
-
JProfiler:商业软件,需要付费。功能强大。