免费和开源的Java疑难解答


的第三个里程碑VisualVM几天前被释放。该版本标志着该故障排除工具的开放来源,以及其应用编程接口的进一步完善。因此,也许这是一个花些时间探索其主要特征的好时机。理解VisualVM的关键是将它视为许多JDK工具的捆绑,如JConsole、jstack和jinfo,并结合了几种新的高级分析功能。该工具设计用于生产和开发,并进一步增强了Java SE平台的监控和性能分析能力。

所有运行在与可视化虚拟机相同系统上的Java应用程序都列在工具左侧的“应用程序”选项卡中。远程系统上的Java应用程序也显示在“远程”节点下。工具的主要部分显示了每个应用程序的特定信息,包括可视化虚拟机本身。对于每个应用程序,都有一个“概述”选项卡,显示一般信息,如进程标识和用于运行应用程序的Java版本。

“监视器”选项卡显示应用程序的堆、永久生成、线程和类的图形。总堆空间以一种颜色显示,正在使用的堆空间量以另一种颜色显示。在下面,您可以看到“线程”选项卡,为可视化虚拟机本身创建线程可视化:

VisualVM可以读取和解释二进制堆转储文件。您可以从可视化虚拟机中生成一个堆转储,也可以通过工具顶部的“配置文件”菜单打开一个堆转储。然后,工具的heapwalker部分可以提供关于转储的信息,如下面两个截图所示:

heapwalker可以帮助你追踪内存泄漏。上面显示的实例视图显示了一个类的所有对象实例,从中可以找到最近的垃圾收集根点。

VisualVM是可插拔的。它附带了一个插件管理器,已经包含了三个插件:

这个插件给你一个浏览器。它和JConsole's MBeans tab:“MBean”选项卡允许您访问平台MXBean规范的完整集合。此外,您可以使用“MBean”选项卡监视和管理应用程序的MBean。”它允许您获取和设置MBean属性,调用MBean操作以及订阅MBean通知。一旦你安装了插件,它看起来是这样的:

可视化垃圾收集插件为您提供了垃圾收集相关信息的图形概述:

最后,您对JConsole插件的投资是受保护的,因为它们可以被加载到VisualVM中,就像它们被加载到JConsole中一样。首先,您需要安装上面第四张图片中显示的“VisualVM-JConsole”插件。然后,VisualVM可以接受任何JConsole插件。例如,让我们来看看JTop插件。JTop是一个JDK演示,展示了应用程序中运行的所有线程的线程CPU使用情况。此演示有助于识别高CPU消耗的线程。这是它在JConsole中的安装方式:

<JDK6>/bin/jconsole -pluginpath <JDK6>/demo/management/JTop/JTop.jar

而且,要将同一个插件安装到VisualVM中,您只需打开etc/visualvm.conf文件,然后将以下内容添加到“默认选项”设置中:

-J-Djconsole.plugin.path=<JDK6>/demo/management/JTop/JTop.jar

对于JTop,您最终会在一个新的选项卡中看到以下内容,即由前面提到的VisualVM-JConsole插件提供的JConsole选项卡:

随着第三个里程碑的发布,您可以尝试应用编程接口并创建自己的插件。当你进入可视化虚拟机的下载页面时,你会看到一个可视化虚拟机二进制文件的链接以及一个里程碑3应用编程接口文档的链接。这让您可以访问Javadoc,以及对VisualVM入口点的概述。但是,请注意,应用编程接口仍在开发中,还不能被认为是稳定的。

欢迎你来join the mailing list并在那里提供您的反馈。