VisualVM 是一款免费的 Java 问题诊断工具,通过可视化的界面集成了 JDK 的各种诊断命令和轻量级的性能分析功能,适用于生产和开发环境。最近,VisualVM 1.3 版发布,新增功能包括支持获取远程堆转储(Heap dump)和监控远程主机等,本文对其做一简要介绍。
VisualVM 的基本功能包括获取线程转储、堆转储和进行性能分析,可以帮助相关人员诊断 Java 应用的各种问题,例如:
- 线程转储,适用于分析性能问题,如 Java 应用的响应时间很高或者应用挂起,则可以通过线程转储查看运行时各种线程的状态,比如是否都在等待某个限制性关键资源。
- 堆转储,适用于分析内存问题,比如诊断 Java 应用的泄露问题,通过获取和比较堆转储可以发现堆中各个对象的大小和数量变化情况,发现可疑的内存增长点。
- 性能分析,顾名思义,用户可以查看哪些方法运行时间最长、调用次数最多等等,从而对应用做重构优化。
VisualVM 面向的用户包括:
- 应用开发人员:监控、分析和获取线程转储、查看堆转储
- 系统管理员:监控和控制 Java 应用
- Java 应用用户:创建缺陷报告
对于 VisualVM 1.3 版来说,功能集、支持的操作系统和 JDK 都发生了变化。
新功能包括:
- 将 Sampler 插件添加到核心工具集。
- 支持获取远程堆转储。
- 支持通过 JMX 应用监控远程主机。
- 支持主机、应用、核心转储(coredump)和快照(snapshot)的定制排序。
- 识别 Clojure、Groovy、 JRuby、Jython 和 Scala 的运行时系统。
支持的操作系统:
- Microsoft Windows (7, Vista, XP, Server): 32bit & 64bit
- Linux: Intel platform, 32bit & 64bit
- Sun Solaris: Intel & Sparc platform, 32bit & 64bit
- Mac OS X: Intel platform, 32bit & 64bit
- HP-UX 11i: PA-RISC platform, 32bit & 64bit
适用的 JDK 版本:
- Oracle/Sun JDK 6+
- OpenJDK 6+
- IcedTea 6+
- Apple JDK 6+
- HP-UX JDK 6.0.01+
VisualVM 除了基本功能之外,还有一个强大的插件机制,用户可以根据需要配置已有插件或者定制开发自己的插件,比较实用的现有插件包括Visual GC Plugin、Threads Inspector、JVM Capabilities 等。
对VisualVM 感兴趣的朋友可以下载试用、查看源代码、阅读中文版的入门指南和介绍。
细心的读者可能会发现VisualVM 不支持IBM JDK。IBM 有自己的 JDK 实现,并且广泛应用于各个平台(Solaris 除外)上的 IBM 产品(如 Websphere Application Server),如果朋友需要诊断部署在 IBM 产品上的 Java 应用的问题,可以下载 IBM 提供的问题诊断工具 IBM Support Assistant 。
评论