JConsole使用指南:从命令行到GUI启动Java性能分析器

1.JConsole是什么?

JConsole使用指南:从命令行到GUI启动Java性能分析器

JConsole 是从 Java 5 开始引入的。JConsole 是一个内置的 Java 性能分析器,可以从命令行或 GUI shell 中运行。您可以轻松地使用 JConsole(或其高端表兄弟 VisualVM)来监视 Java 应用程序性能并跟踪 Java 中的代码。

2. 如何启动JConsole 如果从命令行启动它,请将JDK 添加到PATH 中并运行jconsole。如果从 GUI shell 启动,找到 JDK 安装路径,打开 bin 文件夹,然后双击 jconsole。

当分析工具弹出时(取决于运行的 Java 版本和运行的 Java 程序的数量),可能会出现一个对话框,询问要连接的进程的 URL,或者可能会列出多个不同的本地 Java 进程(有时包含 JConsole 进程本身)进行连接。如图所示:

要分析该程序,请双击该进程。

3、如何设置JAVA程序,使其运行时能够被JConsolse连接并分析。无需设置任何参数即可连接到本地打开的JConsole(对比打开JConsole的电脑)。 (Java SE 6不需要设置,之前还需要设置运行时,参数-Dcom.sun.management.jmxremote)无认证连接(如下设置表示:连接端口为8999,可无需身份验证即可连接)

Java代码

-Dcom.sun.management.jmxremote.port=8999\ -Dcom.sun.management.jmxremote.authenticate=false\ -Dcom.sun.management.jmxremote.ssl=false

如果考虑到安全因素,需要认证,需要安全连接,也可以这样做。参考:4.JConsole如何连接远程机器的JAVA程序(示例)

1、编写一个简单的JAVA程序,总是运行在某台机器上,如(192.168.0.181)

Java代码

java-cp.-Dcom.sun.management.jmxremote.port=8999-Dcom.sun.managent.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=falseJConsoleTest

2. 连接到另一台机器

可以直接使用命令:

Java代码

jconsole.exe192.168.0.181:8999

也可以在已经打开的JConsole界面中操作连接->新建连接->选择远程进程->输入远程主机IP和端口号->点击“连接”,如图:

然后就会进入分析界面:

性能分析

下面我们就来说说如何分析和使用这六个标签。

概述

概述很简单,没什么好说的,自己看一下就可以了,不过值得一提的是,你可以通过右键单击图表将数据保存到CSV文件中,并且可以使用其他工具来将来分析数据。

记忆

这个更有价值。请参考堆内存、非堆内存、内存池的状态、总体内存分配和使用情况以及不同GC垃圾回收的次数和时间。您可以手动执行GC来查看内存变化。

在分析JAVA内存问题和调优时非常有用。你必须学习JVM内存模型,然后你会发现这里的每一个值都是有意义的。

GC算法和参数对性能有显着影响。注意垃圾收集的次数、时间以及partial GC和full GC。调整您使用的不同GC以及每个GC下的参数,然后在此视图中观察以获得良好的性能。

下面是JavaHotSpotVM垃圾收集器下每一代分代GC的划分图:

关于GC,可以参考:

线

左下角显示所有活动线程(如果线程过多,可以在下面的过滤栏中输入字符串,过滤掉想要观察的线程)。单击某个显示将显示线程的名称、状态、阻塞和等待次数以及堆栈信息。

该图显示了峰值线程数(红色)和当前活动线程数(蓝色)。

另外,下面还有一个“Deadlock Detected”按钮,有时候还是很有用的。

种类

没什么好说的。

虚拟机总结

没什么好说的,看一下,内存状态,操作系统……

MBeans

这里可以进行一些附加操作。

插件

Java代码

jconsole-pluginpathC:\Java\jdk1.6.0_22\demo\management\JTop\JTop.jar

你一眼就能看出它是什么。

推荐使用JConsole的升级版本,jvisualvm。

关于jvisualvm的使用,->

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

24阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

27阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

23阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读